home *** CD-ROM | disk | FTP | other *** search
/ Shareware Overload / ShartewareOverload.cdr / database / steel24.zip / REMARKS2.BAS < prev    next >
BASIC Source File  |  1980-01-01  |  29KB  |  614 lines

  1. 10000 REM READ FFILE 
  2. 10010 OPEN "I",#1,"FFILE" / OPENS FFILE AS A SEQUENTIAL ACCESS FILE
  3. 10020 INPUT #1,MAXF / MAXF = THE MAXIMIM FILE NUMBER
  4. 10030 FOR A = 1 TO MAXF / START READING DATA FOR EACH FILE 
  5. 10040 INPUT #1,A,F$(A),NREC(A),L(A) / INPUT FORM DISK, FILE NUMBER, FILE NAME, NUMBER OF FIELDS IN THE FILE AND FILE LENGTH
  6. 10050 FOR N = 1 TO NREC(A) / START LOOP READING DATA FOR EACH FIELD
  7. 10060 INPUT #1,FLDN$(A,N),FTY(A,N),FL(A,N) / INPUT FROM DISK FIELD NAME, FIELD TYPE, AND FIELD LENGTH
  8. 10070 IF FTY(A,N) = 2 THEN INPUT #1,D,KEYLIST(A,N) / IF FIELD IS AN INTEGER FIELD THEN INPUT THE KEYLIST NUMBER , 0 = NO KEYLIST
  9. 10075 IF D >< 2 THEN KEYLIST(A,N) = 0 / IF FIELD IS NOT AN INTEGER FIELD THEN THERE IS NO KEYLIST
  10. 10080 NEXT N / END LOOP READING EACH FIELD
  11. 10090 NEXT A / END LOOP READING EACH FILE
  12. 10100 CLOSE #1
  13. 10110 RETURN
  14. 10900 REM  PUT DISK IN DRIVE SUB
  15. 10905 IF HDISK = 2 THEN RETURN / IF USING THE HARD DISK OPTION THEN RETURN
  16. 10910 GOSUB 13000 / CLEAR SCREEN
  17. 10920 PRINT "    ********  PUT PROGRAM DATA DISK IN THE DEFAULT DISK DRIVE  *********"
  18. 10930 PRINT ""
  19. 10940 PRINT "                     THEN PRESS ANY KEY TO CONTINUE "
  20. 10950 PRINT ""
  21. 10960 PRINT "    If the program data disk is already in the default disk drive then"
  22. 10965 PRINT "                     just press any key to continue."
  23. 10970 PRINT ""
  24. 10990 IF INKEY$ = "" GOTO 10990 / STAY ON THIS LINE UNTILL A KEY IS PRESSED
  25. 10992 GOSUB 13000 / CLEAR SCREEN
  26. 10993 PRINT "  READING INFORMATION, PLEASE WAIT "
  27. 10995 RETURN
  28. 11000 REM  LOAD KEYLIST
  29. 11010 GOSUB 13000 / CLEAR SCREEN
  30. 11100 A = 10 / NUMBER OF KEYLIST FILE, DO NOT CHANGE KEYLIST FILE UNLESS YOU KNOW WHAT YOU ARE DOING
  31. 11105 PRINT "FILE : KEYLIST "
  32. 11110 GOSUB 2300 / ASKS FOR DISK DRIVE THE FILE IS ON SUBROUTINE
  33. 11120 GOSUB 2500 / OPEN FILE NUMBER 1 SUBROUTINE
  34. 11130 FOR T = 1 TO 10000 / START READING KEYLISTS
  35. 11140 IF T > MRN GOTO 11900 / AT END OF FILE GOTO 11900
  36. 11150 GET #1,T / GET RECORD NUMBER T
  37. 11160 T1 = CVI(X$(1)) / T1 EQUALS LIST NUMBER
  38. 11170 T2 = CVI(X$(2)) / T2 EQUALS ROW NUMBER IN LIST
  39. 11180 L$(T1,T2) = X$(3) / L$ IS THE STRING CORRESPONDING TO THE KEY
  40. 11185 IF T2 > MAXK(T1) THEN MAXK(T1) = T2 / THE MAXIMUM KEY FOR THE LIST = MAXK(LIST NUMBER)
  41. 11190 NEXT T / END LOOP READING LIST
  42. 11900 KD = 5 / FLAG, LIST HAS BEEN READ
  43. 11935 CLOSE #1
  44. 11937 PRINT FRE(0) / PRINTS MEMORY AVAILABLE, OPTIONAL MAY BE DELETED
  45. 11940 RETURN
  46. 12000 REM ******  PRINT SUBROUTINE  ***** / PRINTS RECORDS ON SCREEN
  47. 12010 PRINT "*************  FILE : ";F$(A);"- ";"RECORD NUMBER: ";RN;" *************"
  48. 12015 IF CSCR = 1 GOTO 34000 / IF USING A CUSTOM SCREEN GOTO 34000
  49. 12020 FOR Q = 1 TO NREC(A) / START LOOP PRINTING EACH FIELD
  50. 12022 GOSUB 12025 
  51. 12023 NEXT Q / END LOOP PRINTING EACH FIELD
  52. 12024 RETURN
  53. 12025 IF Q MOD 19 = 0 THEN GOSUB 12170
  54. 12030 PRINT Q; TAB(5) FLDN$(A,Q); / PRINT FIELD NUMBER AND FIELD NAME
  55. 12040 ON FTY(A,Q) GOSUB 12050,12070,12100,12130,12142 / ON FIELD TYPE GOTO
  56. 12045 RETURN
  57. 12050 PRINT TAB(26) X$(Q) / PRINT THE STRING
  58. 12060 RETURN
  59. 12070 I%=CVI(X$(Q)) / CONVERT AN INTEGER FIELD
  60. 12072 X(N) = I%
  61. 12075 PRINT TAB(25) I%; / PRINT AN INTEGER FIELD
  62. 12080 IF KEYLIST(A,Q) = 0 THEN PRINT ""  / IF NO KEYLIST THEN PRINT TO NEXT LINE
  63. 12082 IF KEYLIST(A,Q) = 0 THEN GOTO 12150 / IF NO KEYLIST THEN SKIP PRINTING THE KEYLIST
  64. 12084 T1 = KEYLIST(A,Q) / T1 EQUALS THE LIST NUMBER
  65. 12085 IF I% < 0 THEN I% = 0 / CATCH NEGITIVE ARRAY VALUES
  66. 12086 W$ = L$(T1,I%) / W$ = THE KEY 
  67. 12090 PRINT TAB(30) "key: ";W$ / PRINT THE KEY
  68. 12095 RETURN 
  69. 12100 I!=CVS(X$(Q)) / CONVERT SINGLE PRECISON NUMBERS
  70. 12110 PRINT TAB(25) I! / PRINT SINGLE PRECISON NUMBERS
  71. 12120 RETURN 
  72. 12130 I#=CVD(X$(Q)) / CONVERT DOUBLE PRECISON 
  73. 12135 X(Q) = I#
  74. 12140 PRINT TAB(25)  I# / PRINT DOUBLE PRECISION NUMBERS
  75. 12141 RETURN 
  76. 12142 I#=CVD(X$(Q)) / CONVERT DOUBLE PRECISION NUMBERS FOR DOLLAR NUMBERS
  77. 12144 PRINT TAB(26);
  78. 12146 PRINT USING "**$########.##";I# / PRINT DOLLAR AMOUNTS
  79. 12147 X(Q) = I#
  80. 12148 RETURN
  81. 12150 RETURN
  82. 12152 IF Q < 20 THEN RETURN
  83. 12153 PRINT""   / CLEARS FIVE LINES FOR THE OPTION MENU
  84. 12154 PRINT ""
  85. 12155 PRINT ""
  86. 12156 PRINT ""
  87. 12157 PRINT ""
  88. 12160 RETURN
  89. 12170 PRINT "***  MORE FIELDS, PRESS ANY KEY TO CONTINUE  ***"
  90. 12180 IF INKEY$ = "" GOTO 12180 / STAY ON THIS LINE UNTILL A KEY IS PRESSED
  91. 12190 RETURN
  92. 12200 REM * LINE PRINT  / THIS SECTION IS ALMOST THE SAME AS THE ABOVE SECTION EXCEPT THAT THE DATA IS PRINTED ON PAPER NOT THE SCREEN
  93. 12210 LPRINT ""
  94. 12220 PRINT "RECORD NUMBER: ";RN 
  95. 12230 LPRINT "RECORD NUMBER: ";RN;
  96. 12235 IF CSCR = 1 THEN GOTO 35000 ELSE LPRINT "" / IF USING A CUSTOM SCREEN THEN GOTO 35000
  97. 12240 FOR Q = 1 TO NREC(A) / START LOOP PRINTING EACH FIELD
  98. 12260 LPRINT Q;TAB(5) FLDN$(A,Q);     
  99. 12270 ON FTY(A,Q) GOTO 12280,12310,12350,12390,12425 / ON FIELD TYPE GOTO
  100. 12280 REM
  101. 12290 LPRINT TAB(26) X$(Q) / PRINT STRINGS
  102. 12300 GOTO 12480
  103. 12310 I%=CVI(X$(Q)) / CONVERT INTEGERS
  104. 12314 LPRINT TAB(25) I%; / PRINT INTEGERS
  105. 12318 IF KEYLIST(A,Q) = 0 THEN LPRINT ""  / IF NO KEYLIST THEN PRINT DOWN TO THE NEXT LINE
  106. 12320 IF KEYLIST(A,Q) = 0 THEN GOTO 12480 / IF NO KEYLIST THEN SKIP PRINTING THE KEYLIST
  107. 12322 T1 = KEYLIST(A,Q) / T1 IS THE LIST NUMBER
  108. 12324 W$ = L$(T1,I%) / W$ IS THE KEY TO PRINT
  109. 12328 LPRINT TAB(30) "key: ";W$ / PRINT THE KEYLIST
  110. 12330 GOTO 12480
  111. 12340 GOTO 12480
  112. 12350 I!=CVS(X$(Q)) / CONVERT SINGLE PRECISION NUMBERS
  113. 12370 LPRINT TAB(25) I! / PRINT SINGLE PRECISION NUMBERS
  114. 12380 GOTO 12480
  115. 12390 I#=CVD(X$(Q)) / CONVERT DOUBLE PRECISION NUMBERS
  116. 12410 LPRINT TAB(25)  I# / PRINT DOUBLE PRECISION NUMBERS
  117. 12420 GOTO 12480
  118. 12425 I#=CVD(X$(Q)) / CONVERT DOLLAR AND CENTS AMOUNTS
  119. 12450 LPRINT TAB(26); 
  120. 12460 LPRINT USING "**$########.##";I# / PRINT DOLLAR AND CENTS AMOUNTS
  121. 12480 NEXT Q / FINISH LOOP PRINTING OUT FIELDS
  122. 12490 RETURN
  123. 12500 PRINT ""  / START OF PRINT CONDENSED RECORD SUBROUTINE
  124. 12510 LPRINT ""
  125. 12530 LPRINT "RECORD # ";RN;" ";
  126. 12540 FOR Q = 1 TO NREC(A) / START LOOP PRINTING EACH FIELD
  127. 12547 IF LEND(Q)= 5 THEN LPRINT "" / FLAG, IF LINE END THEN LPRINT TO NEXT LINE
  128. 12548 T2 = CL(Q) / T2 IS THE COLUMN TO PRINT THE NUMBER AT
  129. 12570 ON FTY(A,Q) GOTO 12590,12610,12730,12770,12810 / ON FIELD TYPE GOTO
  130. 12590 LPRINT TAB(T2) X$(Q); / PRINT STRINGS
  131. 12600 GOTO 12860
  132. 12610 I%=CVI(X$(Q)) / CONVERT INTEGERS
  133. 12630 LPRINT TAB(T2)I%; / PRINT INTEGERS
  134. 12660 IF KEYLIST(A,Q) = 0 THEN GOTO 12860 / IF NO KEYLIST THEN SKIP PRINTING KEYLIST
  135. 12670 T1 = KEYLIST(A,Q) / T1 IS THE KEYLIST NUMBER
  136. 12680 W$ = L$(T1,I%) / W$ IS THE KEY TO PRINT
  137. 12685 T1 = CL(Q) + 11 / T1 IS THE COLUMN TO PRINT THE KEYLIST ON
  138. 12700 LPRINT TAB(T1)"key: ";W$; / PRINT THE KEYLIST
  139. 12720 GOTO 12860
  140. 12730 I!=CVS(X$(Q)) / CONVERT SINGLE PRECISION NUMBERS
  141. 12750 LPRINT TAB(T2)I!; / PRINT SINGLE PRECISION NUMBERS
  142. 12760 GOTO 12860
  143. 12770 I#=CVD(X$(Q)) / CONVERT DOUBLE PRECISION NUMBERS
  144. 12790 LPRINT TAB(T2)I#; / PRINT DOUBLE PRECISION NUMBERS
  145. 12800 GOTO 12860
  146. 12810 I#=CVD(X$(Q)) / CONVERT DOUBLE PRECISION DOLLAR AND CENTS AMOUNTS
  147. 12840 LPRINT TAB(T2) "";  
  148. 12850 LPRINT USING "**$########,.##";I#; / PRINT DOLLAR AND CENTS AMOUNTS
  149. 12860 NEXT Q / END OF LOOP PRINTING EACH FIELD 
  150. 12870 RETURN
  151. 12880 PRINT " HOW MANY COLUMNS ARE THERE ON YOUR PRINTER "
  152. 12890 GOSUB 14100 / INPUT INTEGER SUBROUTINE
  153. 12892 COLM = DT# / NUMBER OF COLUMS EQUALS THE VALUE RETURNED FROM INPUT SUBROUTINE
  154. 12895 RETURN
  155. 12900 REM ******* TAB CONTROL *******
  156. 12901 C = 15 / FIRST FIELD STARTS AT COLUMN 15 TO LEAVE ROOM FOR THE RECORD NUMBER
  157. 12902 FOR T = 1 TO NREC(A) / START LOOP COMPUTING COLUMN TO PRINT FIELDS IN
  158. 12903 LEND(T) = 0 / LINE END = NO
  159. 12905 CL(T)= C / COLUMN SET TO END OF LAST FIELD
  160. 12906 GOSUB 12910
  161. 12907 IF C > COLM THEN GOSUB 12970 /IF COLUMN IS GREATER THEN PRINT GOSUB 12970
  162. 12908 NEXT T / FINISH LOOP COMPUTING TABS
  163. 12909 RETURN
  164. 12910 ON FTY(A,T) GOTO 12920,12930,12940,12950,12950 / ON FIELD TYPE GOTO
  165. 12920 C = C + FL(A,T) + 1 / FOR STRINGS ALLOW THE STRING LENGTH PLUS 1
  166. 12925 RETURN     
  167. 12930 C = C + 7 / FOR INTEGERS ALLOW 7 SPACES
  168. 12933 IF KEYLIST(A,T) > 0 THEN C = C + 30 / FOR KEYLISTS ALLOW 30 SPACES
  169. 12935 RETURN
  170. 12940 C = C + 9 / FOR SINGLE PRECISION NUMBERS ALLOW 9 SPACES
  171. 12945 RETURN    
  172. 12950 C = C + 16 / FOR DOUBLE PRECISION AND DOLLAR AMOUNTS ALLOW 16 SPACES
  173. 12952 RETURN
  174. 12970 CL(T)= 1 / START NEXT LINE AT COLUMN 1
  175. 12972 C =1
  176. 12974 LEND(T) = 5 / LINE END FLAG EQUALS YES
  177. 12975 GOSUB 12910 
  178. 12980 RETURN
  179. 13000 REM  CLEAR SCREEN
  180. 13010 CLS
  181. 13020 RETURN
  182. 13050 REM  LOCATE - TAB SET IN PROGRAM
  183. 13060 GOTO 13110 / SKIP SETTING TAB TO ONE
  184. 13100 REM  LOCATE - TAB EQUALS ONE
  185. 13105 TB = 1 / COLUMN EQUALS ONE
  186. 13110 LOCATE LI,TB
  187. 13120 RETURN
  188. 13600 REM CHECK FOR ASC0 / CHECK INPUTS FOR EXTENDED ASCII CODE
  189. 13610 S4$ = INKEY$ / S4$ IS THE SECOND ASCII CODE 
  190. 13620 C2 =  ASC(S4$) / C2 IS THE NUMBER OF THE ASCII CODE
  191. 13630 IF C2 = 83 THEN C = 1 / SET DELETE EQUAL TO CONTROL A
  192. 13640 IF C2 = 82 THEN C = 6 / SET INSERT EQUAL TO CONTROL F
  193. 13650 IF C2 = 75 THEN C = 19 / SET CURSER LEFT EQUAL TO CONTROL S
  194. 13660 IF C2 = 77 THEN C = 4  / SET CURSER RIGHT EQUAL TO CONTROL D
  195. 13670 RETURN
  196. 14000 REM INTEGER LESS THEN 100 CHECK
  197. 14010 MAX = 2 / MAXIMUM OF TWO CHARACTERS
  198. 14020 ACT$ = " 1234567890=<>^" / ACCEPTABLE CHARACTERS FOR NEW ENTRY
  199. 14023 IF NE = 0 THEN ACT$ = " 1234567890" / ACCEPTABLE CHARACTERS 
  200. 14025 PRINT ">__<";
  201. 14030 GOTO 14500
  202. 14100 REM INTEGER
  203. 14110 MAX = 8 / MAXIMUM OF EIGHT CHARACTERS
  204. 14120 ACT$ = " 1234567890-+,=<>^" / ACCEPTABLE CHARACTERS FOR NEW ENTRY
  205. 14123 IF NE = 0 THEN ACT$ = " 1234567890-+," / ACCEPTABLE CHARACTERS
  206. 14125 PRINT ">________<"; / PROMPT
  207. 14130 GOTO 14500
  208. 14200 REM  SINGLE PRECISION
  209. 14210 MAX = 10 / MAXIMUM OF TEN CHARACTERS
  210. 14220 ACT$ = " 1234567890-+,.%$=<>^" / ACCEPTABLE CHARACTERS FOR NEW ENTRY
  211. 14223 IF NE = 0 THEN ACT$ = " 1234567890+-,.%$" / ACCEPTABLE CHARACTERS
  212. 14225 PRINT ">__________<"; 
  213. 14230 GOTO 14500
  214. 14300 REM DOUBLE PRECISION
  215. 14310 MAX = 20 / MAXIMUM OF 20 CHARACTERS
  216. 14320 ACT$ = " 1234567890-+,.%$=<>^" / ACCEPTABLE CHARACTERS FOR NEW ENTRY
  217. 14323 IF NE = 0 THEN ACT$ = " 1234567890+-,.%$" / ACCEPTABLE CHARACTERS
  218. 14325 PRINT ">____________________<";
  219. 14330 GOTO 14500
  220. 14500 REM NUMBER CHECK
  221. 14505 A$ = "" / INITIALIZE A$ TO THE NULL STRING
  222. 14510 K$(20) = " " 
  223. 14515 KTMAX = 0 / INITIALIXE THE COUNT MAXIMUM TO 0
  224. 14520 FOR T9 = 1 TO MAX 
  225. 14525 K$(T9) = " " / INITIALIZE K$ TO BLANK
  226. 14530 NEXT T9
  227. 14535 DIG$ = "1234567890." / STORED CHARACTERS
  228. 14540 DOTFLG = 0 / DECIMAL POINT FLAG SET TO 0
  229. 14541 T2 = MAX + 1 
  230. 14542 FOR T6 = 1 TO T2
  231. 14544 PRINT CHR$(CH); / BACKSPACE TO FIRST SPACE
  232. 14546 NEXT T6
  233. 14550 IF INKEY$ = "" GOTO 14560 ELSE GOTO 14550 / CLEAR THE KEYBOARD BUFFER
  234. 14560 KT = 0 / INITIALIZE COUNT TO 0
  235. 14565 REM 
  236. 14570 KT = KT + 1 / INCREMENT COUNT
  237. 14575 REM     
  238. 14580 W$ = INKEY$ / GET CHARACTER FROM KEYBOARD
  239. 14585 IF W$ = "" GOTO 14580 /IF THERE IS NO CHARACTER LOOP UNTILL ON IS ENTERED
  240. 14590 C = ASC(W$) / C EQUALS THE ASCII VALUE OF THE ENTERED CHARACTER
  241. 14593 IF C = 0 THEN GOSUB 13600 / CHECK EXTENDED ASCII CODES
  242. 14595 IF C = 13 GOTO 14660 / RETURN 
  243. 14600 IF C = 17 OR C = 8 GOTO 14860 / BACKSPACE
  244. 14605 IF C = 19 GOTO 14690 / CURSER LEFT
  245. 14610 IF C = 4 GOTO 14710 / CURSER RIGHT
  246. 14615 IF C = 6 GOTO 14730 / INSERT
  247. 14620 IF C = 1 GOTO 14790 / DELETE
  248. 14625 IF KT > MAX GOTO 14575 / DOES NOT ACCEPT CHARACTERS BEYOND THE MAX LIMIT
  249. 14630 IF INSTR(ACT$,W$) = 0 GOTO 14890 / IF W$ IS NOT ONE OF THE ACCEPTABLE CHARACTERS THEN GOTO UNACCEPTABLE CHARACTER SUBROUTINE
  250. 14635 K$(KT) = W$ / SAVE THE CHARACTER ENTERED AS K$(COUNT)
  251. 14645 PRINT K$(KT); / PRINT THE CHARACTER ON THE SCREEN
  252. 14650 IF KT > KTMAX THEN KTMAX = KT / IF COUNT IS GREATER THEN COUNT MAX THEN COUNT MAX EQUALS THE COUNT
  253. 14655 GOTO 14570 / BACK TO GET ANOTHER CHARACTER
  254. 14660 REM * RETURN / DONE WITH ENTERY
  255. 14670 FOR T9 = 1 TO KTMAX / FOR EACH CHARACTER ENTERED
  256. 14675 A$ = A$ + K$(T9) / A$ = ALL THE CHARACTERS STRUNG (CONCATED) TOGETHER
  257. 14676 IF K$(T9) = "^" GOTO 15830 / NEW ENTRY OPTION SAME AS LAST RECORD OVER 1
  258. 14677 IF K$(T9) = ">" GOTO 15950 / NEW ENTRY OPTION ABORT RECORD
  259. 14678 IF K$(T9) = "=" GOTO 15800 / NEW ENTRY OPTION  SAME AS LAST RECORD
  260. 14679 IF K$(T9) = "<" GOTO 15900 / NEW ENTRY OPTION START RECORD OVER
  261. 14680 NEXT T9
  262. 14681 IF KTMAX = 0 THEN PRINT "1"; / DEFAULT = 1
  263. 14682 IF KTMAX = 0 THEN DT# = 1 / DEFAULT = 1
  264. 14684 IF SPRT >< 5 THEN PRINT "" / IF PRINTING IS NOT SUPRESSED THEN PRINT TO NEXT LINE / THIS IS NECESSARY IF THE PROMPT IS ON THE 24 TH LINE ON IBM BASIC OTHERWISE THE SCREEN WILL SCROLL UP ONE LINE
  265. 14685 SPRT = 0 / SET SURPRESS PRINT FLAG TO NO 
  266. 14686 IF KTMAX = 0 THEN RETURN / IF DEFAULT THEN RETURN
  267. 14687 GOTO 14905
  268. 14689 GOTO 14905
  269. 14690 REM * MOVE CURSE BACK
  270. 14695 IF KT = 1 GOTO 14575 / CAN'T MOVE CURSER BACK ANY MORE
  271. 14700 KT = KT - 1 / COUNT = COUNT -1
  272. 14703 PRINT CHR$(CH); / BACKSPACE ONE SPACE
  273. 14705 GOTO 14575
  274. 14710 REM * MOVE CURSER FORWARD
  275. 14715 IF KT >= MAX GOTO 14575 / CAN'T MOVE CURSER FORWARD ANY
  276. 14716 IF KT > (KTMAX + 1) GOTO 14575 / CANT MOVE CURSER FORWARD
  277. 14718 PRINT K$(KT); / PRINT ONE CHARACTER RIGHT
  278. 14720 KT = KT + 1 / COUNT = COUNT + 1
  279. 14725 GOTO 14575
  280. 14730 REM * INSERT 
  281. 14733 IF KT > KTMAX GOTO 14575 / CAN'T INSERT HERE
  282. 14735 X9 = MAX 
  283. 14740 WHILE X9 > KT
  284. 14745 X9 = X9 - 1
  285. 14750 K$(X9 + 1) = K$(X9) / MOVE ALL THE CHARACTERS OVER ONE
  286. 14755 WEND 
  287. 14760 K$(KT) = " "
  288. 14767 KTMAX = KTMAX + 1 / INCREMENNT THE MAXIMUM COUNT
  289. 14769 IF KTMAX > MAX THEN KTMAX = MAX / DO NOT INCREMENT BEYOND THE MAX
  290. 14770 FOR T9 = KT TO KTMAX  
  291. 14775 PRINT K$(T9); / PRINT OUT THE NEW CHARACTERS
  292. 14780 NEXT T9
  293. 14781 T6 = (KTMAX - KT) + 1
  294. 14782 FOR T7 = 1 TO T6
  295. 14783 PRINT CHR$(CH); / MOVE CURSER BACK
  296. 14784 NEXT T7
  297. 14785 GOTO 14575
  298. 14790 REM * DELETE 
  299. 14793 IF KT > KTMAX GOTO 14575 / DO NOT DELETE IF NOTHING LEFT TO DELETE
  300. 14794 IF KTMAX = 1 GOTO 14575 / DO NOT DELETE IF ONLY ONE CHARACTER
  301. 14795 K$(MAX + 1) = ""
  302. 14800 X9 = KT 
  303. 14805 WHILE X9 <= MAX
  304. 14810 K$(X9) = K$(X9 + 1) / MOVE CHARACTERS OVER ONE
  305. 14815 X9 = X9 + 1
  306. 14820 WEND 
  307. 14830 KTMAX = KTMAX - 1 / DECREMENT KTMAX
  308. 14835 FOR T9 = KT TO KTMAX
  309. 14840 PRINT K$(T9); / PRINT NEW CHARACTERS
  310. 14845 NEXT T9
  311. 14850 PRINT "_"; / PRINT UNDERLINE OVER LAST CHARACTER
  312. 14851 T7 = (KTMAX - KT) + 2
  313. 14852 FOR T8 = 1 TO T7
  314. 14853 PRINT CHR$(CH); / MOVE CURSER BACK
  315. 14854 NEXT T8
  316. 14855 GOTO 14575
  317. 14860 REM BACKSPACE
  318. 14865 IF KT = 1 GOTO 14575 / CAN'T BACKSPACE PAST FIRST CHARACTER
  319. 14870 KT = KT - 1 / DECREMENT COUNT
  320. 14875 PRINT CHR$(CH); / BACKSPACE
  321. 14877 K$(KT) = " " / CHANGE LAST CHARACTER TO A BLANK
  322. 14880 PRINT "_"; / PRINT UNDERLINE OVER BACKSPACED CHARACTER
  323. 14883 PRINT CHR$(CH); / BACKSPACE
  324. 14885 GOTO 14575
  325. 14890 REM INPUT NOT ACCEPTABLE
  326. 14895 PRINT CHR$(7); / BEEPS
  327. 14900 GOTO 14580
  328. 14905 REM * CLEAR STRINGS
  329. 14910 MAX = LEN(A$) / SETS MAX EQUAL TO THE LENGTH OF A$, A$ IS THE STRING OF ALL THE CHARACTERS
  330. 14915 D2$ = "" / INITIALIZE TO NULL
  331. 14920 D1$ = "" / INITIALIZE TO NULL
  332. 14925 DFLG = 0 / INITIALIZE DECIMAL FLAG TO 0
  333. 14930 FOR Q93 = 1 TO MAX / START LOOP TESTING EACH CHARACTER
  334. 14935 R$ = MID$(A$,Q93,1) / R$ IS THE CHARACTER TO TEST
  335. 14940 IF INSTR(DIG$,R$) = 0 GOTO 14975 / CHARACTER NOT A DIGIT OR DECIMAL POINT
  336. 14945 IF R$ = "." OR DFLG = 1 GOTO 14965 / START DECIMAL POINT
  337. 14950 IF DFLG = 1 GOTO 14965
  338. 14955 D2$ = D2$ + R$ / D2$ CONTAINS ALL CHARACTERS TO THE LEFT OF DECIMAL POINT
  339. 14960 GOTO 14975
  340. 14965 D1$ = D1$ + R$ / D1$ CONTAINS ALL THE CHARACTERS TO THE RIGHT OF DECIMAL 
  341. 14970 DFLG = 1 / SET DECIMAL FLAG TO 1
  342. 14975 NEXT Q93 / GET NEXT CHARACTER
  343. 14980 DA# = VAL(D2$) / CONVERT TO NUMBER
  344. 14985 D1# = VAL(D1$) / CONVERT STRING TO NUMBER
  345. 14990 DT# = DA# + D1# / ADD THE WHOLE NUMBER TO THE FRACTIONAL NUMBER
  346. 14995 IF K$(1) = "-" THEN DT# =  -DT# / CHANGE TO NEGITIVE IF APPLICABLE
  347. 14997 RETURN / RETURN TO THE SPOT IN THE PROGRAM THAT CALLED IT , DT# IS THE RETURNED RESULT
  348. 15000 REM * ALPHANUMERIC CHECK
  349. 15010 MAX = FL(A,Q) / THE MAXIMUM LENGTH OF THE ENTRY IS SET EQUAL TO THE FIELD LENGTH
  350. 15020 GOTO 15040
  351. 15030 REM * MAX SET IN PROGRAM
  352. 15040 A$ = ""  / INITIALIXE TO NULL STRING
  353. 15050 PRINT ">";         / PRINTS PROMPT
  354. 15060 FOR N9 = 1 TO MAX  / "
  355. 15065 K$(N9) = ""        / "
  356. 15070 PRINT "_";         / "
  357. 15080 NEXT N9            / "
  358. 15090 PRINT "<";         / "
  359. 15100 T2 = MAX + 1
  360. 15110 FOR T4 = 1 TO T2
  361. 15120 PRINT CHR$(CH); / MOVES CURSER BACK TO FIRST CHARACTER
  362. 15125 NEXT T4
  363. 15130 KT = 0 / INITIALIZE TO 0
  364. 15135 KTMAX = 1 / INITIALIZE TO 1
  365. 15140 REM * CHECK ALFANUMERIC INPUT FOR LENGTH
  366. 15150 KT = KT + 1
  367. 15160 PRINT TAB(KT+1)"";
  368. 15170 K$ = INKEY$ / GET CHARACTER FROM KEYBOARD
  369. 15180 IF K$ = "" GOTO 15170 / LOOP UNTILL CHARACTER IS NOT A NULL
  370. 15190 C = ASC(K$) / C IS THE ASCII VALUE OF THE CHARACTER
  371. 15195 IF C = 0 THEN GOSUB 13600 / CHECK EXTENDED ASCII CODES
  372. 15200 IF C = 13 GOTO 15310 / RETURN 
  373. 15210 IF C = 17 OR C = 8 GOTO 15710 / BACKSPACE
  374. 15220 IF C = 19 GOTO 15370 / CURSER LEFT
  375. 15230 IF C = 4  GOTO 15410 / CURSER RIGHT
  376. 15240 IF C = 6 GOTO 15450 / INSERT
  377. 15250 IF C = 1 GOTO 15570 / DELETE
  378. 15260 IF KT > MAX GOTO 15160 / CAN'T INPUT PAST MAXIMUM CHARACTER
  379. 15270 K$(KT) = K$ / K$(COUNT) EQUALS THE CHARACTER
  380. 15290 PRINT K$(KT); / PRINT THE CHARACTER
  381. 15295 IF KT > KTMAX THEN KTMAX = KT  / IF COUNT IS GREATER THEN MAXIMUM COUNT THEN MAXIMUM COUNT EQUALS THE COUNT
  382. 15300 GOTO 15150
  383. 15310 REM * RETURN
  384. 15320 FOR T9 = 1 TO MAX
  385. 15330 A$ = A$ + K$(T9) / A$ IS ALL THE CHARACTERS STRUNG (CONCATED) TOGETHER
  386. 15332 IF K$(T9) = "^" GOTO 15830 / NEW ENTRY OPTION SAME AS LAST RECORD OVER 1
  387. 15333 IF K$(T9) = ">" GOTO 15950 / NEW ENTRY OPTION ABORT ENTRY
  388. 15335 IF K$(T9) = "=" GOTO 15850 / NEW ENTRY OPTION  EQUALS LAST RECORD 
  389. 15338 IF K$(T9) = "<" GOTO 15900 / NEW ENTRY OPTION START RECORD OVER
  390. 15340 NEXT T9
  391. 15350 PRINT "" / PRINTS TO NEXT LINE
  392. 15360 RETURN  / TO PROGRAM WHERE THE INPUT SUBROUTINE WAS CALLED FROM, A$ IS THE RETURNED STRING
  393. 15370 REM * MOVE CURSE BACK
  394. 15380 IF KT = 1 GOTO 15160 / CAN'T MOVE CURSOR PAST FIRST CHARACTER
  395. 15385 KT = KT - 1 / COUNT EQUALS COUNT - 1
  396. 15390 PRINT CHR$(CH); / BACKSPACE ONE CHARACTER
  397. 15400 GOTO 15160
  398. 15410 REM * MOVE CURSER FORWARD
  399. 15420 IF KT >= MAX GOTO 15160 / CAN'T MOVE CURSER FORWARD
  400. 15425 IF KT >  KTMAX  GOTO 15160 / CAN'T MOVE CURSOR FORWARD
  401. 15427 PRINT K$(KT); / PRINT OVER ONE CHARACTER
  402. 15430 KT = KT + 1 / COUNT = COUNT PLUS ONE
  403. 15440 GOTO 15160 
  404. 15450 REM INSERT*
  405. 15460 X9 = MAX
  406. 15470 WHILE X9 > KT
  407. 15480 X9 = X9 - 1
  408. 15490 K$(X9 + 1) = K$(X9) / MOVE CHARACTERS OVER ONE
  409. 15500 WEND 
  410. 15510 K$(KT) = " " / PRINT A BLANK WHERE THE CURSER IS
  411. 15520 KTMAX = KTMAX + 1 / MAXIMUM COUNT = MAXIMUM COUNT + 1
  412. 15525 IF KTMAX > MAX THEN KTMAX = MAX / IF THE COUNT MAXIMUM IS GREATER THEN THE MAXIMUM THEN THE COUNT MAXIMUM EQUALS THE MAXIMUM
  413. 15530 FOR T9 = KT TO KTMAX  
  414. 15540 PRINT K$(T9); / PRINT THE NEW CHARACTERS
  415. 15550 NEXT T9
  416. 15552 T6 = (KTMAX - KT) +1
  417. 15554 FOR T7 = 1 TO T6
  418. 15556 PRINT CHR$(CH); / BACKSPACE TO WHERE THE CURSOR WAS
  419. 15558 NEXT T7
  420. 15560 GOTO 15160
  421. 15570 REM *DELETE
  422. 15575 IF KT > KTMAX GOTO 15170 / CAN'T DELETE HERE
  423. 15578 IF KTMAX = 1 GOTO 15160 / CAN'T DELETE HERE
  424. 15580 K$(MAX + 1) = "" / INITILIZE TO NULL
  425. 15590 X9 = KT 
  426. 15600 WHILE X9 <= KTMAX
  427. 15610 K$(X9) = K$(X9 + 1) / MOVE CHARACTERS OVER
  428. 15620 X9 = X9 + 1
  429. 15630 WEND 
  430. 15650 KTMAX = KTMAX - 1
  431. 15660 FOR T9 = KT TO KTMAX
  432. 15670 PRINT K$(T9); / PRINT NEW CHARACTERS
  433. 15680 NEXT T9
  434. 15690 PRINT "_";
  435. 15692 T7 = (KTMAX - KT) + 2 
  436. 15694 FOR T6 = 1 TO T7
  437. 15696 PRINT CHR$(CH); / BACKSPACE TO WHERE THE CURSER WAS
  438. 15698 NEXT T6
  439. 15700 GOTO 15160
  440. 15710 REM * BACKSPACE
  441. 15720 IF KT = 1 GOTO 15160 /CAN'T BACKSPACE
  442. 15725 K$(KT) = " " / SET TO BLANK
  443. 15730 KT = KT - 1 / DECREMENT COUNT
  444. 15735 K$(KT) = " " 
  445. 15740 PRINT CHR$(CH); / BACKSPACE
  446. 15750 PRINT "_"; / PRINT UNDERLINE
  447. 15755 PRINT CHR$(CH); / BACKSPACE
  448. 15760 GOTO 15160 
  449. 15800 REM * SAME ENTRY AS LAST RECORD
  450. 15810 DT# = X(N) / RETURNS THE VALUE OF THE LAST RECORD AS DT#
  451. 15820 RETURN
  452. 15830 REM * SAME ENTRY AS LAST RECORD OVER ONE COLUMN
  453. 15835 DT# = X(N + 1) / RETURNS THE VALUE OF THE LAST RECORD OVER ONE AS DT#
  454. 15840 RETURN
  455. 15850 REM * SAME ENTRY AS LAST RECORD ALFANUMERIC
  456. 15860 A$ = CK$(N) / RETURNS THE SAME ENTRY AS LAST RECORD AS A$
  457. 15870 RETURN
  458. 15900 REM RESTART DATA ENTRY*
  459. 15910 REFLG = 1 / RESTART FLAG = YES RESTART
  460. 15915 IF NE = 0 GOTO 15340 / IF THIS IS NOT A NEW ENTRY THEN DISREGARD
  461. 15920 RETURN
  462. 15950 REM * ABORT NEW DATA ENTRY
  463. 15960 IF NE = 0 GOTO 15340 / IF THIS IS NOT A NEW ENTRY THEN DISREGARD 
  464. 15970 ABORTFLG = 1 / ABORT FLAG = YES ABORT
  465. 15980 RETURN
  466. 16000 GOSUB 13000 / CLEAR SCREEN
  467. 16010 PRINT "***********  MAKE SURE YOUR PRINTER IS ON  **************"
  468. 16020 PRINT ""
  469. 16030 PRINT "********************  WITH PAPER  ***********************"
  470. 16040 PRINT ""
  471. 16050 PRINT "**********  PRESS ANY KEY TO START PRINTING  ************"
  472. 16055 PRINT ""
  473. 16057 PRINT "     *******  PRESS THE LETTER A TO ABORT  *******"
  474. 16070 T$ = INKEY$
  475. 16073 IF T$ = "" GOTO 16070 / LOOP UNTIL A KEY IS PRESSED
  476. 16075 PRINT T$
  477. 16085 IF T$ = "A" OR T$ = "a" THEN GOTO 3010 / IF "A" IS PRESSED THEN GOTO FILE OPTIONS
  478. 16090 RETURN
  479. 16200 REM * PRINT OUT FIELDS
  480. 16205 T2 = 1 / INITIALIZE TAB TO 1
  481. 16210 FOR T = 1 TO NREC(A) / START LOOP PRINTING FIELD NAMES
  482. 16220 PRINT TAB(T2) T;"-";FLDN$(A,T); / PRINT FIELD NUMBER AND NAME
  483. 16230 IF T MOD 2 = 0 THEN PRINT "" /  IF EVEN NUMBER FIELD PRINT TO NEXT LINE
  484. 16235 IF T MOD 2 = 0 THEN T2 = -25 / IF EVEN NUMBER FIELD RESET TAB
  485. 16237 T2 = T2 + 26 / INCREMENT TAB BY 26
  486. 16340 NEXT T
  487. 16350 RETURN
  488. 16800 REM *  HARD DISK OPTION
  489. 16810 GOSUB 13000 / CLEAR SCREEN
  490. 16820 PRINT "****************  ARE YOU USING A HARD DISK  *******************"
  491. 16830 PRINT ""
  492. 16840 PRINT "          1 - NO , I AM USING FLOPPY DISKS"
  493. 16845 PRINT ""
  494. 16850 PRINT "          2 - YES, I AM USING A HARD DISK"
  495. 16852 PRINT "               with all my files on the hard disk"
  496. 16854 PRINT "               and the hard disk is the default drive"
  497. 16860 PRINT ""
  498. 16870 PRINT "*************  ENTER THE NUMBER THEN PRESS RETURN  *************"
  499. 16880 GOSUB 14000 / INTEGER INPUT SUBROUTINE
  500. 16890 IF DT#<1 OR DT#>2 GOTO 16880 / IF INPUT OUT OF RANGE THEN REPROMPT
  501. 16900 HDISK = DT# / HARD DISK FLAG DT# (RETURNED FROM INPUT SUBROUTINE)
  502. 16910 RETURN
  503. 17000 REM
  504. 17005 RNB = 0
  505. 17010 GOSUB 13000 / CLEAR SCREEN
  506. 17020 PRINT "******************  SEARCH A SORTED FILE  *******************"
  507. 17030 PRINT ""
  508. 17040 GOSUB 16200  / PRINT FIELDS SUBROUTINE
  509. 17060 PRINT ""
  510. 17070 PRINT "***********  ENTER ZERO TO RETURN TO INITIAL MENU  **********"
  511. 17080 PRINT ""
  512. 17090 PRINT "************  WHAT FIELD IS THIS FILE SORTED BY  ************"
  513. 17100 GOSUB 14000 / INPUT INTEGER SUBROUTINE
  514. 17101 IF DT# <0 OR DT# >NREC(A)  GOTO 17100 / IF OPTION OUT OF RANGE REENTER 
  515. 17105 SF = DT# / SF, SEARCH THIS FIELD EQUALS THE NUMBER RETURNED FROM INPUT SUBROUTINE
  516. 17110 IF SF = 0 GOTO 3010 / IF OPTION 0 RETURN TO FILE OPTION
  517. 17120 PRINT "*********  WHAT VALUE DO YOU WANT TO SEARCH FOR ?  **********"
  518. 17130 PRINT FLDN$(A,SF);"=" ; 
  519. 17150 ON FTY(A,SF) GOTO 17160,17200,17250,17300 / ON FIELD TYPE GOTO
  520. 17160 MAX = FL(A,SF) / MAXIMUM INPUT STRING EQUALS THE FIELD LENGTH OF THE FIELD WE ARE SEARCHING
  521. 17162 GOSUB 15030 / INPUT STRING SUBROUTINE
  522. 17164 SV$ = A$ / SV$, THE VALUE TO SEARCH FOR EQUALS A$ ( RETURNED FROM SUBROUTINE
  523. 17166 LN = LEN(A$) / LN = LENGTH OF THE STRING YOU ARE SEARCHING FOR
  524. 17170 GOTO 17350 
  525. 17200 GOSUB 14100 / INPUT INTEGER SUBROUTINE
  526. 17202 SV% = DT# / SEARCH VALUE EQUALS VALUE RETURNED FROM SUBROUTINE
  527. 17205 SV$ = MKI$(SV%) / CONVERT SEARCH VALUE TO A STRING
  528. 17210 GOTO 17350
  529. 17250 GOSUB 14200 / INPUT SINGLE PRECISION SUBROUTINE
  530. 17252 SV! = DT# / SEARCH VALUE EQUALS VALUE RETURNED FROM SUBROUTINE
  531. 17255 SV$ = MKS$(SV!) / CONVERT SEARCH VALUE TO A STRING
  532. 17260 GOTO 17350 
  533. 17300 GOSUB 14300 / INPUT DOUBLE PRECISION SUBROUTINE
  534. 17303 INPUT SV# 
  535. 17305 SV$ = MKD$(DT#) / CONVERT TO A STRING
  536. 17350 REM START SEARCH*
  537. 17360 RN = 8192 / INITIALIZE RECORD NUMBER TO 8192
  538. 17365 I!= RN  / INITIALIZE I! TO 8192
  539. 17368 IF RN > MRN GOTO 17800 / IF RECORD NUMBER IS GREATER THEN THE MAXIMUM RECORD NUMBER THEN GOTO 17800
  540. 17370 GET #1,RN / GET RECORD NUMBER RN
  541. 17375 I!= I!/ 2 / REDUCE THE INCREMENT VALUE BY HALF
  542. 17376 IF FTY(A,SF) = 1 THEN XT$ = LEFT$(X$(SF),LN) ELSE XT$=X$(SF) / IF THE SEARCH FIELD IS A STRING THEN TAKE THE LEFT PART OF THE STING WITH LENGTH LN. IF THE SEARCH VALUE IS A NUMBER THE LEAVE IT THE WAY IT IS.
  543. 17377 IF I!< 1  THEN GOTO 17900 / IF INCREMENT VALUE IS LESS THEN ONE THEN END SEARCH
  544. 17378 IF XT$ = SV$ THEN RNB = RN / IF THE FIELD AND SEARCH VALUE MATCH THEN SET RNB (RECORD NUMBER BACKUP MATCH) TO RECORD NUMBER
  545. 17380 IF XT$ < SV$ THEN GOTO 17500 / IF THE FIELD IS LESS THEN THE VALUE SEARCHING FOR GOTO 17500
  546. 17390 RN = RN - I! / SUBTRACT INCREMENT VALUE FROM RECORD NUMBER
  547. 17400 GOTO 17368
  548. 17500 RN = RN + I! / ADD INCREMENT VALUE TO RECORD NUMBER
  549. 17510 GOTO 17368
  550. 17600 REM
  551. 17610 GOTO 8057 / SHOW RECORD ON SCREEN
  552. 17800 REM ON ERROR ROUTINE / IS NO LONGER AN ON ERROR ROUTINE. RECORD NUMBER LARGER THEN MAXIMUM FILE NUMBER
  553. 17801 I!= I!/ 2 / HALF INCREMENT VALUE
  554. 17802 IF I!< 1 GOTO 17900 / IF INCREMENT VALUE LESS THEN ONE END SEARCH
  555. 17805 RN = RN - I! / SUBTRACT RECORD NUMBER FROM INCREMENT VALUE
  556. 17810 GOTO 17368 / CONTINUE SEARCH
  557. 17900 IF XT$ = SV$ THEN GOTO 17950 / IF CURRENT RECORD MATCHES GOTO 17950
  558. 17902 IF RNB > 0 THEN RN = RNB / IF BACKUP MATCH THEN RECORD NUMBER = RECORD BACKUP MATCH.  
  559. 17904 IF RNB > 0 THEN GOTO 8057 / IF BACKUP MATCH THEN SHOW RECORD ON SCREEN
  560. 17906 PRINT " RECORD NOT FOUND "
  561. 17910 GOTO 17000 / BACK TO INITIAL SEARCH MENU
  562. 17950 PRINT "RN = ";RN
  563. 17960 GOTO 8057 / SHOW RECORD ON SCREEN
  564. 18000 REM 
  565. 18005 SFLG = 1 / SEARCH FLAG EQUALS YES
  566. 18010 GOSUB 13000 / CLEAR SCREEN
  567. 18020 PRINT "*********************  SEARCH  FILE  ***********************"
  568. 18030 PRINT ""
  569. 18040 GOSUB 16200 / PRINT FIELDS SUBROUTINE
  570. 18060 PRINT ""
  571. 18070 PRINT "***********  ENTER ZERO TO RETURN TO INITIAL MENU  **********"
  572. 18080 PRINT ""
  573. 18090 PRINT "*************  WHICH FIELD DO YOU WANT TO SEARCH  ***********"
  574. 18100 GOSUB 14000 / INPUT INTEGER LESS THE 100 SUBROUTINE
  575. 18101 IF DT# <0 OR DT# >NREC(A) GOTO 18100 / IF INPUT OUT OF RANGE THEN REENTER
  576. 18105 SF = DT# / SEARCH FIELD EQUALS NUMBER RETURNED FROM SUBROUTINE
  577. 18110 IF SF = 0 GOTO 3010 / IF OPTION = 0 THEN GOTO FILE OPTIONS
  578. 18120 PRINT "*********  WHAT VALUE DO YOU WANT TO SEARCH FOR ?  **********"
  579. 18130 PRINT FLDN$(A,SF);"=" 
  580. 18150 ON FTY(A,SF) GOTO 18160,18200,18250,18300 / ON FIELD TYPE OF THE SEARCHED FIELD GOTO
  581. 18160 MAX = FL(A,SF) / MAXIMUM LENGTH OF STRING TO INPUT EQUALS FIELD LENGTH
  582. 18162 GOSUB 15030 / INPUT STRING SUBROUTINE
  583. 18164 SV$ = A$ / SEARCH VALUE EQUALS VALUE RETURNED FROM INPUT SUBROUTINE
  584. 18166 LN = LEN(A$) / LN EQUALS LENGTH OF A$
  585. 18170 GOTO 18350 / GOTO START SEARCH
  586. 18200 GOSUB 14100 / INPUT INTEGER SUBROUTINE 
  587. 18202 SV% = DT# / SEARCH VALUE EQUALS VALUE RETURNED FROM INPUT SUBROUTINE
  588. 18205 SV$ = MKI$(SV%) / CONVERT SEARCH VALUE TO A STRING
  589. 18210 GOTO 18350 / GOTO START SEARCH
  590. 18250 GOSUB 14200 / INPUT SINGLE PRECISION SUBROUTINE
  591. 18252 SV! = DT# / SEARCH VALUE EQUALS VALUE RETURNED FROM INPUT SUBROUTINE
  592. 18255 SV$ = MKS$(SV!) / CONVERT SEARCH TO A STRING
  593. 18260 GOTO 18350 / GOTO START SEARCH
  594. 18300 GOSUB 14300 / INPUT DOUBLE PRECISION SUBROUTINE
  595. 18303 INPUT SV#  
  596. 18305 SV$ = MKD$(DT#) / CONVERT SEARCH VALUE TO A STRING
  597. 18350 REM * START SEARCH
  598. 18360 GOSUB 18800 / GET STARTING RECORD NUMBER
  599. 18365 FOR RN = RNSS TO MRN / START SEARCH LOOP FOR RECORD NUMBER START SEARCH TO MAXIMUM RECORD NUMBER
  600. 18370 GET #1,RN / GET RECORD NUMBER RN
  601. 18376 IF FTY(A,SF) = 1 THEN XT$ = LEFT$(X$(SF),LN) ELSE XT$=X$(SF) / IF SEARCH FIELD IS A STRING THEN TAKE THE LEFT PART OF THE STING EQUAL IN LENGTH TO THE VALUE YOU ARE SEARCHING FOR. IF A NUMBER TAKE ENTIRE FIELD
  602. 18378 IF XT$ = SV$ THEN GOTO 8057 / IF FIELD AND SEARCH VALUE MATCH THE SHOW RECORD
  603. 18380 NEXT RN / END OF SEARCH LOOP
  604. 18390 GOTO 3010 / GOT TO FILE OPTIONS
  605. 18800 REM *  GET STARTING AND ENDING FILE
  606. 18803 PRINT ""
  607. 18805 PRINT "MINIMUM RECORD NUMBER = 1  MAXIMUM RECORD NUMBER = ";MRN
  608. 18810 PRINT "******  WHICH RECORD NUMBER DO YOU WANT TO START THE SEARCH AT  ******"
  609. 18820 GOSUB 14100 / INPUT INTEGER SUBROUTINE
  610. 18830 IF DT#<1 OR DT#>MRN THEN 18820 / RECORD NUMBER OUT OF RANGE THEN REENTER
  611. 18840 RNSS = DT# / RECORD NUMBER START SEARCH EQUAL THE VALUE RETURNED FROM THE INPUT SUBROUTINE
  612. 18900 RETURN
  613.  THEN REENTER
  614. 18840 RNSS = DT# / RECORD NUMBER START SEARCH EQUAL THE VALUE RETURNED