home *** CD-ROM | disk | FTP | other *** search
/ Play and Learn 2 / 19941.ZIP / 19941 / EDUCMISC / EDPAK_4 / MAIN.BAS (.txt) < prev    next >
Encoding:
GW-BASIC  |  1994-02-04  |  49.1 KB  |  1,829 lines

  1. 1  GOSUB 65000
  2. 2  PRINT FRE(0)
  3. 3  DEFDBL X         
  4. 4  DEFINT A-W,Y-Z
  5. 5  DIM F$(15),FLDN$(15,28),FTY(15,28),FL(15,28),IOPT(28)
  6. 6  DIM PROMPT$(28),IFN(28),IFLD(28),IRNFLD(28),NOS(28),ADDFLD(28,6)
  7. 7  DIM SUBX(28),SUBY(28),MULX(28),MULY(28)
  8. 8  DIM XKEY(28),YKEY(28),CMOPT(28),MAXMIN(28,6)
  9. 9  DIM KC(28),CFLD(28)             
  10. 10  DIM X$(28),Y$(28)
  11. 13  DIM L(15),NREC(15),Z$(28),KT(28)
  12. 14  DIM X(28),CK$(28),SN$(28)
  13. 16  DIM KEYLIST(15,28),L$(10,50),LEND(28),CL(28)
  14. 18  DIM SU%(28),S!(10)
  15. 20  DIM XL(40)
  16. 21  DIM TX(6,28)
  17. 25  DIM S#(28)
  18. 26  DIM MAX(10),Z%(10)
  19. 30  DIM GFLG(28)
  20. 35  DIM K$(80)
  21. 40  DIM FS(30),PP(30),MS(30),MIND#(30),MAXD#(30),TAX#(30),PCT!(30),OVR#(30)
  22. 42  DIM MAXK(10)
  23. 44  DIM SCRN(40),LE(28),CE(28),LEK(28),CEK(28),SW$(18)
  24. 46  DIM REALFLG(28)
  25. 50  DIM SUMF(28),SUM#(28)
  26. 52  DIM SHOW(30),MAXC#(30),MINC#(30)
  27. 54  DIM MAXC(28),MINC(28),MFLG(28)
  28. 61  CH = 29
  29. 62  GOSUB 50000
  30. 63  GOSUB 16800
  31. 65  GOSUB 27000
  32. 80  GOSUB 10000
  33. 90  GOSUB 29000
  34. 95  GOSUB 60000
  35. 100  REM
  36. 400  GOSUB 13000
  37. 402  IF KD < 5 THEN GOSUB 11000
  38. 403  ROPEN = 0
  39. 404  GOSUB 13000
  40. 406  TWOOPEN = 0
  41. 410  PRINT "******  INPUT AND OUTPUT OPTIONS  --  WHAT FILE DO YOU WANT:  *****"
  42. 420  PRINT ""
  43. 425  PRINT " 0  - *** EXIT THE PROGRAM ***"
  44. 430  FOR I = 1 TO MAXF
  45. 440  PRINT I;TAB(5) " - ";F$(I)
  46. 450  NEXT I
  47. 460  PRINT ""
  48. 470  PRINT "***** ENTER THE NUMBER OF THE FILE YOU WANT THEN PRESS RETURN *****"
  49. 475  GOSUB 14000
  50. 477  IF DT# < 0 OR DT#>MAXF  GOTO 475
  51. 480  A = DT#
  52. 482  IF A = 0 GOTO 51000
  53. 483  GOSUB 13000
  54. 484  PRINT "FILE : "; F$(A)
  55. 485  GOSUB 2300
  56. 490  GOSUB 2500
  57. 491  CSCR = 2
  58. 492  IF SCRN(A) <> 0 THEN GOSUB 28000 ELSE RPT = 0
  59. 493  IF MFLG(A) = 2 THEN GOSUB 29070
  60. 494  GOSUB 40020
  61. 495  IF REALFLG(A) = 2 THEN GOSUB 60070
  62. 500  IF REALFLG(A) = 2 THEN GOSUB 60200
  63. 530  GOTO 3000
  64. 1905  MATCH = 1
  65. 2300  REM DISK  SELECTION
  66. 2302  IF HDISK = 2 THEN GOSUB 13000
  67. 2303  IF HDISK = 2 THEN GOTO 2360
  68. 2304  PRINT ""
  69. 2305  PRINT "************  WHICH DISK DRIVE IS THE FILE ON  **************"
  70. 2310  PRINT ""
  71. 2312  PRINT "                 0 - BACK TO CHOICE OF FILES"
  72. 2315  PRINT "                 1 - DISK DRIVE A"
  73. 2320  PRINT "                 2 - DISK DRIVE B"
  74. 2325  PRINT "                 3 - DISK DRIVE C"
  75. 2330  PRINT "                 4 - DISK DRIVE D"
  76. 2335  PRINT ""
  77. 2340  PRINT "***********  ENTER THE NUMBER THEN PRESS RETURN  ************"
  78. 2345  GOSUB 14000
  79. 2347  IF DT# < 0 OR DT#>4 GOTO 2345
  80. 2350  T = DT# 
  81. 2352  IF T = 0 THEN 100
  82. 2355  ON T GOTO 2360,2370,2380,2390
  83. 2360  T$ = F$(A)
  84. 2365  GOTO 2490
  85. 2370  T$ = "B:"+F$(A)
  86. 2375  GOTO 2490
  87. 2380  T$ = "C:"+F$(A)
  88. 2385  GOTO 2490
  89. 2390  T$ = "D:"+F$(A)
  90. 2490  RETURN
  91. 2500  REM OPEN FILE 
  92. 2503  CLOSE #1
  93. 2505  OPEN "R",#1,T$,L(A)
  94. 2507  D = 0
  95. 2510  FOR T = 1 TO NREC(A)
  96. 2520  FIELD #1,D AS DY$,FL(A,T) AS X$(T)
  97. 2530  D = D + FL(A,T)
  98. 2540  NEXT T
  99. 2543  GOSUB 7800
  100. 2545  RETURN
  101. 2550  REM OPEN SECOND FILE
  102. 2553  CLOSE #2
  103. 2555  OPEN "R",#2,T$,L(B)
  104. 2557  D = 0
  105. 2560  FOR T = 1 TO NREC(B)
  106. 2565  FIELD #2,D AS DY$,FL(B,T) AS Y$(T)
  107. 2570  D = D + FL(B,T)
  108. 2575  NEXT T
  109. 2578  RETURN
  110. 2580  REM OPEN THIRD FILE
  111. 2581  CLOSE #3
  112. 2584  OPEN "R",#3,T$,L(C)
  113. 2586  D = 0
  114. 2588  FOR T = 1 TO NREC(C)
  115. 2590  FIELD #3,D AS DY$,FL(C,T) AS Z$(T)
  116. 2592  D = D + FL(C,T)
  117. 2594  NEXT T
  118. 2596  RETURN
  119. 3000  REM SECOND MENU 
  120. 3010  GOSUB 13000
  121. 3011  SFLG = 0
  122. 3012  PRINT "FILE : ";F$(A);TAB(57)"MAXIMUM RECORD :";MRN
  123. 3015  CALFLG = 0
  124. 3020  PRINT "*******************  WHAT DO YOU WANT TO DO WITH THE FILE  *******************"
  125. 3030  PRINT ""
  126. 3035  PRINT " 0 - CHANGE FILES  "
  127. 3040  PRINT " 1 - READ A SPECIFIC RECORD"
  128. 3050  PRINT " 2 - PRINT ON PAPER ALL OR SEVERAL SEQUENTIAL RECORDS"
  129. 3060  PRINT " 3 - SCAN SEVERAL RECORDS IN A FILE"
  130. 3070  PRINT " 4 - SEARCH A FILE"  
  131. 3080  PRINT " 5 - NEW ENTRY"
  132. 3090  PRINT " 6 - SEARCH A SORTED FILE"
  133. 3202  PRINT " 7 - RECALCULATE ALL THE RECORDS IN THE FILE"
  134. 3207  PRINT ""
  135. 3210  PRINT "*************  ENTER THE NUMBER OF THE OPTION THEN PRESS ENTER  ***************"
  136. 3212  SPRT = 5
  137. 3215  GOSUB 14000
  138. 3218  IF DT# < 0 OR DT#>7 GOTO 3215
  139. 3220  N = DT#
  140. 3225  IF N = 0 THEN CLOSE 
  141. 3227  IF N = 0 THEN GOTO 400
  142. 3230  ON N GOTO 8000,5000,4000,18000,3700,17000,47000
  143. 3600  GOTO 18000
  144. 3700  GOSUB 13000
  145. 3720  GOTO 7000
  146. 4000  REM SCAN ALL RECORDS
  147. 4005  GOSUB 13000
  148. 4007  GOSUB 7800
  149. 4008  GOSUB 4100
  150. 4009  GOSUB 13000
  151. 4010  PRINT "************  SCAN ALL SEQUENTIAL RECORDS SUBPROGRAM  ************"
  152. 4011  PRINT ""
  153. 4012  PRINT "               WHAT RECORD DO YOU WANT TO START AT ?  "       
  154. 4013  PRINT ""
  155. 4014  PRINT "                Enter zero to return to file options "
  156. 4015  PRINT ""
  157. 4016  PRINT "***********  ENTER THE RECORD NUMBER THEN PRESS RETURN  ***********"
  158. 4018  GOSUB 14100
  159. 4020  RN = DT#
  160. 4022  IF RN = 0 THEN GOTO 3010
  161. 4032  IF INKEY$ <> "" GOTO 4600
  162. 4035  IF RN > MRN GOTO 26000
  163. 4040  GET #1,RN
  164. 4050  GOSUB 4300
  165. 4060  RN = RN + 1
  166. 4070  GOTO 4032
  167. 4100  REM ****  GET FIELDS TO DISPLAY
  168. 4110  FOR T = 1 TO NREC(A)
  169. 4120  GOSUB 13000
  170. 4124  PRINT "*******************  SCAN SUBROUTINE  **********************"
  171. 4126  PRINT ""
  172. 4130  PRINT "FIELD NUMBER : ";T;" - "; FLDN$(A,T)
  173. 4140  PRINT ""
  174. 4150  PRINT "*****  DO YOU WANT THIS FIELD DISPLAYED WHILE SCANNING  *****"
  175. 4160  PRINT ""
  176. 4170  PRINT "             1 - NO, Do not show this field "
  177. 4180  PRINT "             2 - YES, Show this field "
  178. 4190  PRINT ""
  179. 4200  PRINT "************  Enter the number then press return  ***********"
  180. 4210  GOSUB 14000
  181. 4220  IF DT# < 1 OR DT# > 2 THEN 4210
  182. 4230  SHOW(T) = DT#
  183. 4240  NEXT T
  184. 4250  RETURN
  185. 4300  REM ****  PRINT FIELDS 
  186. 4305  PRINT "RECORD NUMBER ";RN
  187. 4310  FOR Q = 1 TO NREC(A)
  188. 4320  IF SHOW(Q) = 2 THEN GOSUB 12030
  189. 4330  NEXT Q
  190. 4340  RETURN
  191. 4600  REM 
  192. 4604  PRINT "******************  PAUSE SUBROUTINE  **********************"
  193. 4608  PRINT " 1 - CONTINUE SCANING "
  194. 4610  PRINT " 0 - BACK TO FILE OPTIONS "
  195. 4625  PRINT "***********  ENTER THE NUMBER THEN PRESS RETURN  ***********"    
  196. 4628  GOSUB 14000
  197. 4635  IF DT# = 0 THEN GOTO 3010
  198. 4640  GOTO 4040
  199. 5000  REM 
  200. 5005  GOSUB 13000
  201. 5010  PRINT "************  PRINT ON PAPER ALL SEQUENTIAL RECORDS  *************"
  202. 5011  PRINT ""
  203. 5012  PRINT "          WHAT RECORD DO YOU WANT TO START PRINTING AT ?"
  204. 5013  PRINT ""
  205. 5014  PRINT "               Enter zero to return to file options "
  206. 5015  PRINT ""
  207. 5016  PRINT "***********  ENTER THE RECORD NUMBER THEN PRESS RETURN  **********"
  208. 5018  GOSUB 14100
  209. 5020  RN = DT#
  210. 5021  IF RN = 0 GOTO 3010
  211. 5022  PRINT "**************  DO YOU WANT THIS RECORD PRINTED IN  **************"
  212. 5023  PRINT "                   1 - EXPANDED FORM "
  213. 5024  PRINT "                   2 - CONDENSED FORM "
  214. 5025  PRINT "**************  ENTER THE NUMBER THEN PRESS RETURN  **************"
  215. 5026  GOSUB 14000
  216. 5027  IF DT# < 1 OR DT#>2 GOTO 5026
  217. 5030  PFLG = DT#
  218. 5031  IF PFLG = 2 THEN GOSUB 12880
  219. 5032  IF PFLG = 2 THEN GOSUB 12900
  220. 5033  GOSUB 16000
  221. 5036  REM
  222. 5038  IF INKEY$ <> "" GOTO 5600
  223. 5039  IF RN > MRN GOTO 26000
  224. 5040  REM
  225. 5041  GET #1,RN
  226. 5050  IF PFLG = 1 THEN GOSUB 12200
  227. 5060  IF PFLG = 2 THEN GOSUB 12500
  228. 5510  RN = RN + 1
  229. 5520  GOTO 5036
  230. 5600  REM 
  231. 5602  GOSUB 13000
  232. 5604  PRINT "******************  PAUSE SUBROUTINE  **********************"
  233. 5606  PRINT ""
  234. 5608  PRINT " 1 - CONTINUE PRINTING "
  235. 5610  PRINT " 0 - BACK TO FILE OPTIONS"
  236. 5620  PRINT ""
  237. 5625  PRINT "***********  ENTER THE NUMBER THEN PRESS RETURN  ***********"    
  238. 5628  GOSUB 14000
  239. 5630  IF DT# = 0  THEN GOTO 3010
  240. 5640  GOTO 5040
  241. 5725  REM
  242. 6000  REM 
  243. 7000  REM 
  244. 7010  GOSUB 13000
  245. 7012  PRINT ""
  246. 7014  PRINT "FILE NAME: ";F$(A)
  247. 7020  PRINT "********************  NEW RECORD ENTRY  ********************"
  248. 7022  PRINT ""
  249. 7024  PRINT "*******************  WHAT RECORD NUMBER ?  *****************"
  250. 7030  PRINT ""
  251. 7031  GOSUB 7800
  252. 7032  PRINT "**********  Enter zero to return to file options  **********"
  253. 7033  PRINT ""
  254. 7034  PRINT "---- MAXIMUM RECORD NUMBER  CURRENTLY = ";MRN
  255. 7035  PRINT "---- ENTER A NUMBER FROM 1 TO ";MRN +1        
  256. 7036  PRINT ""
  257. 7038  PRINT "********  ENTER THE RECORD NUMBER THEN PRESS RETURN  *******"
  258. 7040  GOSUB 14100
  259. 7042  IF DT# <0 OR DT# >(MRN +1) GOTO 7040
  260. 7045  RN = DT#
  261. 7046  GOSUB 13000
  262. 7048  IF RN = 0 GOTO 3010
  263. 7200  GOSUB 40000
  264. 7205  IF RN > MRN THEN MRN = RN
  265. 7210  GOTO 7010
  266. 7800  MRN = LOF(1)/ L(A)
  267. 7805  REM MRN = INT(MRN)
  268. 7810  RETURN
  269. 7900  REM ***** LOF
  270. 7910  MRN2 = LOF(3)/82
  271. 7920  RETURN
  272. 7950  REM ******* LOF
  273. 7960  MRNS = LOF(2)/L(B)
  274. 7970  RETURN
  275. 8000  REM 
  276. 8010  GOSUB 13000
  277. 8020  PRINT "********************  READ A SINGLE RECORD  *******************"
  278. 8030  PRINT ""
  279. 8040  PRINT "FILE NAME: ";F$(A)
  280. 8042  PRINT ""
  281. 8043  PRINT "MINIMUM RECORD NUMBER : 1   MAXIMIM RECORD NUMBER : ";MRN
  282. 8044  PRINT ""
  283. 8045  PRINT "******* ENTER THE NUMBER OF THE RECORD THEN PRESS RETURN ******"
  284. 8046  PRINT ""
  285. 8048  PRINT "***********  ENTER ZERO TO RETURN TO FILE OPTIONS  ************"
  286. 8049  GOSUB 7800
  287. 8050  GOSUB 14100
  288. 8052  RN = DT#
  289. 8057  IF RN = 0 THEN GOTO 3010
  290. 8058  GOSUB 13000
  291. 8059  IF RN > MRN GOTO 26800
  292. 8060  GET #1,RN
  293. 8500  GOSUB 12000
  294. 8510  LI = 20
  295. 8515  GOSUB 13100
  296. 8520  PRINT "*****************************    OPTIONS :    ********************************"      
  297. 8530  PRINT " 1 - READ THE NEXT RECORD        3 - CORRECT THIS RECORD  5 - SHOW SUBRECORDS  "
  298. 8532  PRINT " 2 - PRINT THIS RECORD ON PAPER  4 - READ ANOTHER RECORD  0 - TO FILE OPTIONS  "
  299. 8535  PRINT "******************  Enter the number then press return  **********************"
  300. 8537  SPRT = 5
  301. 8540  GOSUB 14000
  302. 8542  IF DT# <0 OR DT# > 5  GOTO 8510
  303. 8550  B = DT#
  304. 8552  IF B = 3 THEN GOSUB 9000
  305. 8554  IF B = 3 THEN GOTO 8510
  306. 8555  IF SFLG > 0 AND B = 1 THEN GOTO 18380
  307. 8556  IF B = 1 THEN RN = RN + 1
  308. 8560  IF B = 5 AND RPT <> 2 THEN 8580
  309. 8562  ON B GOTO 8058,8600,9000,8000,20000
  310. 8564  REM
  311. 8570  GOTO 3010
  312. 8580  LI = 24
  313. 8585  GOSUB 13100
  314. 8590  PRINT TAB(10) "SUBRECORDS ARE NOT SET UP ON THIS FILE";
  315. 8595  GOTO 8510
  316. 8600  REM  PRINT SINGLE RECORD 
  317. 8610  GOSUB 16000
  318. 8680  GOSUB 12200 
  319. 8920  GOTO 8000
  320. 9000  REM 
  321. 9005  LI = 20
  322. 9007  GOSUB 13100
  323. 9010  PRINT "*******************  CORRECT RECORD SUBROUTINE  *******************           "
  324. 9020  PRINT "          0 - TO FILE OPTION -- DONE WITH CORRECTIONS                         "    
  325. 9022  PRINT "          1 TO ";NREC(A);"THE FIELD YOU WANT TO CHANGE                    " 
  326. 9025  PRINT "***************  ENTER THE NUMBER THEN PRESS RETURN  **************           "
  327. 9028  SPRT = 5
  328. 9030  GOSUB 14000
  329. 9031  IF DT# <0 OR DT# >NREC(A)  GOTO 9030
  330. 9033  T = DT#
  331. 9040  IF T = 0 THEN GOTO 3010
  332. 9045  D = T
  333. 9046  IF REALFLG(A) = 2 AND T = TGTRN THEN GOSUB 61300
  334. 9047  Q = T
  335. 9048  LI = 20
  336. 9049  GOSUB 13100
  337. 9050  PRINT "******  FIELD NUMBER: ";D;" FIELD NAME: ";FLDN$(A,D);" ******         "
  338. 9060  PRINT "***********  ENTER THE CORRECTION THEN PRESS RETURN  **************           "
  339. 9062  PRINT "                                                                             "
  340. 9063  PRINT "                                                                             "
  341. 9064  PRINT "                                                                             ";
  342. 9066  LI = 22
  343. 9068  GOSUB 13100
  344. 9070  ON FTY(A,D) GOTO 9100,9150,9200,9250,9250
  345. 9100  GOSUB 15000
  346. 9105  I$ = A$
  347. 9110  LSET X$(D) = I$
  348. 9120  GOTO 9290
  349. 9150  GOSUB 14100
  350. 9151  T2 = KEYLIST(A,D) 
  351. 9152  T3 = MAXK(T2)
  352. 9153  REM IF KY(A,D) = 2 AND ( DT# < 1 OR DT# > T3) GOTO 9150
  353. 9154  IF MFLG(A) = 2 THEN GOSUB 29190
  354. 9155  I% = DT#
  355. 9157  I# = I%
  356. 9160  LSET X$(D) = MKI$(I%)
  357. 9165  X(D) = I%
  358. 9170  GOTO 9290
  359. 9200  GOSUB 14200
  360. 9203  IF MFLG(A) = 2 THEN GOSUB 29190
  361. 9205  I! = DT#
  362. 9207  I# = I!
  363. 9210  LSET X$(D) = MKS$(I!)
  364. 9220  GOTO 9290
  365. 9250  GOSUB 14300
  366. 9253  IF MFLG(A) = 2 THEN GOSUB 29190
  367. 9255  I# = DT#
  368. 9260  LSET X$(D) = MKD$(I#)
  369. 9290  PUT #1,RN
  370. 9291  N = D
  371. 9294  IF REALFLG(A) = 2 AND N = FLD1 THEN GOSUB 61000
  372. 9295  IF REALFLG(A) = 2 AND N = FLD2 THEN GOSUB 61200
  373. 9296  IF REALFLG(A) = 2 AND N = TGTRN THEN GOSUB 61400
  374. 9297  IF REALFLG(A) = 2 AND N = TGTRN THEN GOSUB 60300
  375. 9298  IF GFLG(Q) = 1 THEN  GOSUB 46000 ELSE GOSUB 44500
  376. 9299  RETURN   
  377. 10000  REM READ FFILE 
  378. 10010  OPEN "I",#1,"FFILE"
  379. 10020  INPUT #1,MAXF
  380. 10030  FOR A = 1 TO MAXF
  381. 10040  INPUT #1,A,F$(A),NREC(A),L(A)
  382. 10050  FOR N = 1 TO NREC(A)
  383. 10060  INPUT #1,FLDN$(A,N),FTY(A,N),FL(A,N)
  384. 10070  IF FTY(A,N) = 2 THEN INPUT #1,D,KEYLIST(A,N)
  385. 10075  IF D >< 2 THEN KEYLIST(A,N) = 0
  386. 10080  NEXT N
  387. 10090  NEXT A
  388. 10100  CLOSE #1
  389. 10110  RETURN
  390. 10900  REM  PUT DISK IN DRIVE SUB
  391. 10905  IF HDISK = 2 THEN RETURN
  392. 10910  GOSUB 13000
  393. 10920  PRINT "    ********  PUT PROGRAM DATA DISK IN THE DEFAULT DISK DRIVE  *********"
  394. 10930  PRINT ""
  395. 10940  PRINT "                     THEN PRESS ANY KEY TO CONTINUE "
  396. 10950  PRINT ""
  397. 10960  PRINT "    If the program data disk is already in the default disk drive then"
  398. 10965  PRINT "                     just press any key to continue."
  399. 10970  PRINT ""
  400. 10990  IF INKEY$ = "" GOTO 10990
  401. 10992  GOSUB 13000
  402. 10993  PRINT "  READING INFORMATION, PLEASE WAIT "
  403. 10995  RETURN
  404. 11000  REM  LOAD KEYLIST
  405. 11010  GOSUB 13000
  406. 11100  A = 10
  407. 11105  PRINT "FILE : KEYLIST "
  408. 11110  GOSUB 2300
  409. 11120  GOSUB 2500
  410. 11130  FOR T = 1 TO 10000
  411. 11140  IF T > MRN GOTO 11900
  412. 11150  GET #1,T
  413. 11160  T1 = CVI(X$(1))
  414. 11170  T2 = CVI(X$(2))
  415. 11180  L$(T1,T2) = X$(3)
  416. 11185  IF T2 > MAXK(T1) THEN MAXK(T1) = T2
  417. 11190  NEXT T
  418. 11900  KD = 5
  419. 11935  CLOSE #1
  420. 11937  PRINT FRE(0)
  421. 11940  RETURN
  422. 12000  REM ******  PRINT SUBROUTINE  *****
  423. 12010  PRINT "*************  FILE : ";F$(A);"- ";"RECORD NUMBER: ";RN;" *************"
  424. 12015  IF CSCR = 1 GOTO 34000
  425. 12020  FOR Q = 1 TO NREC(A)
  426. 12022  GOSUB 12025
  427. 12023  NEXT Q
  428. 12024  RETURN
  429. 12025  IF Q MOD 19 = 0 THEN GOSUB 12170
  430. 12030  PRINT Q; TAB(5) FLDN$(A,Q);     
  431. 12040  ON FTY(A,Q) GOSUB 12050,12070,12100,12130,12142
  432. 12045  RETURN
  433. 12050  PRINT TAB(26) X$(Q)
  434. 12060  RETURN
  435. 12070  I%=CVI(X$(Q))
  436. 12072  X(N) = I%
  437. 12075  PRINT TAB(25) I%;
  438. 12080  IF KEYLIST(A,Q) = 0 THEN PRINT ""
  439. 12082  IF KEYLIST(A,Q) = 0 THEN GOTO 12150
  440. 12084  T1 = KEYLIST(A,Q)
  441. 12085  IF I% < 0 THEN I% = 0
  442. 12086  W$ = L$(T1,I%)
  443. 12090  PRINT TAB(30) "key: ";W$
  444. 12095  RETURN 
  445. 12100  I!=CVS(X$(Q))
  446. 12110  PRINT TAB(25) I!
  447. 12120  RETURN 
  448. 12130  I#=CVD(X$(Q))
  449. 12135  X(Q) = I#
  450. 12140  PRINT TAB(25)  I#
  451. 12141  RETURN 
  452. 12142  I#=CVD(X$(Q))
  453. 12144  PRINT TAB(26);
  454. 12146  PRINT USING "**$########.##";I#
  455. 12147  X(Q) = I#
  456. 12148  RETURN
  457. 12150  RETURN
  458. 12152  IF Q < 20 THEN RETURN
  459. 12153  PRINT""
  460. 12154  PRINT ""
  461. 12155  PRINT ""
  462. 12156  PRINT ""
  463. 12157  PRINT ""
  464. 12160  RETURN
  465. 12170  PRINT "***  MORE FIELDS, PRESS ANY KEY TO CONTINUE  ***"
  466. 12180  IF INKEY$ = "" GOTO 12180
  467. 12190  RETURN
  468. 12200  REM * LINE PRINT
  469. 12210  LPRINT ""
  470. 12220  PRINT "RECORD NUMBER: ";RN 
  471. 12230  LPRINT "RECORD NUMBER: ";RN;
  472. 12235  IF CSCR = 1 THEN GOTO 35000 ELSE LPRINT "" 
  473. 12240  FOR Q = 1 TO NREC(A)
  474. 12260  LPRINT Q;TAB(5) FLDN$(A,Q);     
  475. 12270  ON FTY(A,Q) GOTO 12280,12310,12350,12390,12425
  476. 12280  REM
  477. 12290  LPRINT TAB(26) X$(Q)
  478. 12300  GOTO 12480
  479. 12310  I%=CVI(X$(Q))
  480. 12314  LPRINT TAB(25) I%;
  481. 12318  IF KEYLIST(A,Q) = 0 THEN LPRINT ""
  482. 12320  IF KEYLIST(A,Q) = 0 THEN GOTO 12480
  483. 12322  T1 = KEYLIST(A,Q)
  484. 12324  W$ = L$(T1,I%)
  485. 12328  LPRINT TAB(30) "key: ";W$
  486. 12330  GOTO 12480
  487. 12340  GOTO 12480
  488. 12350  I!=CVS(X$(Q))
  489. 12370  LPRINT TAB(25) I!
  490. 12380  GOTO 12480
  491. 12390  I#=CVD(X$(Q))
  492. 12410  LPRINT TAB(25)  I#
  493. 12420  GOTO 12480
  494. 12425  I#=CVD(X$(Q))
  495. 12450  LPRINT TAB(26);
  496. 12460  LPRINT USING "**$########.##";I#
  497. 12480  NEXT Q
  498. 12490  RETURN
  499. 12500  PRINT ""
  500. 12510  LPRINT ""
  501. 12530  LPRINT "RECORD # ";RN;" ";
  502. 12540  FOR Q = 1 TO NREC(A)
  503. 12547  IF LEND(Q)= 5 THEN LPRINT ""
  504. 12548  T2 = CL(Q)
  505. 12570  ON FTY(A,Q) GOTO 12590,12610,12730,12770,12810
  506. 12590  LPRINT TAB(T2) X$(Q);
  507. 12600  GOTO 12860
  508. 12610  I%=CVI(X$(Q))
  509. 12630  LPRINT TAB(T2)I%;
  510. 12660  IF KEYLIST(A,Q) = 0 THEN GOTO 12860
  511. 12670  T1 = KEYLIST(A,Q)
  512. 12680  W$ = L$(T1,I%)
  513. 12685  T1 = CL(Q) + 11
  514. 12700  LPRINT TAB(T1)"key: ";W$;
  515. 12720  GOTO 12860
  516. 12730  I!=CVS(X$(Q))
  517. 12750  LPRINT TAB(T2)I!;
  518. 12760  GOTO 12860
  519. 12770  I#=CVD(X$(Q))
  520. 12790  LPRINT TAB(T2)I#;
  521. 12800  GOTO 12860
  522. 12810  I#=CVD(X$(Q))
  523. 12840  LPRINT TAB(T2) "";
  524. 12850  LPRINT USING "**$########,.##";I#;
  525. 12860  NEXT Q
  526. 12870  RETURN
  527. 12880  PRINT " HOW MANY COLUMNS ARE THERE ON YOUR PRINTER "
  528. 12890  GOSUB 14100
  529. 12892  COLM = DT#
  530. 12895  RETURN
  531. 12900  REM ******* TAB CONTROL *******
  532. 12901  C = 15
  533. 12902  FOR T = 1 TO NREC(A)
  534. 12903  LEND(T) = 0
  535. 12905  CL(T)= C 
  536. 12906  GOSUB 12910
  537. 12907  IF C > COLM THEN GOSUB 12970
  538. 12908  NEXT T
  539. 12909  RETURN
  540. 12910  ON FTY(A,T) GOTO 12920,12930,12940,12950,12950
  541. 12920  C = C + FL(A,T) + 1
  542. 12925  RETURN     
  543. 12930  C = C + 7
  544. 12933  IF KEYLIST(A,T) > 0 THEN C = C + 30
  545. 12935  RETURN
  546. 12940  C = C + 9
  547. 12945  RETURN    
  548. 12950  C = C + 16
  549. 12952  RETURN
  550. 12970  CL(T)= 1
  551. 12972  C =1
  552. 12974  LEND(T) = 5
  553. 12975  GOSUB 12910
  554. 12980  RETURN
  555. 13000  REM  CLEAR SCREEN
  556. 13010  CLS
  557. 13020  RETURN
  558. 13050  REM  LOCATE - TAB SET IN PROGRAM
  559. 13060  GOTO 13110
  560. 13100  REM  LOCATE - TAB EQUALS ONE
  561. 13105  TB = 1
  562. 13110  LOCATE LI,TB
  563. 13120  RETURN
  564. 13600  REM CHECK FOR ASC0
  565. 13610  S4$ = INKEY$
  566. 13620  C2 =  ASC(S4$)
  567. 13630  IF C2 = 83 THEN C = 1
  568. 13640  IF C2 = 82 THEN C = 6
  569. 13650  IF C2 = 75 THEN C = 19
  570. 13660  IF C2 = 77 THEN C = 4 
  571. 13670  RETURN
  572. 14000  REM INTEGER LESS THEN 100 CHECK
  573. 14010  MAX = 2
  574. 14020  ACT$ = " 1234567890=<>^"
  575. 14023  IF NE = 0 THEN ACT$ = " 1234567890"
  576. 14025  PRINT ">__<";
  577. 14030  GOTO 14500
  578. 14100  REM INTEGER
  579. 14110  MAX = 8
  580. 14120  ACT$ = " 1234567890-+,=<>^"
  581. 14123  IF NE = 0 THEN ACT$ = " 1234567890-+,"
  582. 14125  PRINT ">________<";
  583. 14130  GOTO 14500
  584. 14200  REM  SINGLE PRECISION
  585. 14210  MAX = 10
  586. 14220  ACT$ = " 1234567890-+,.%$=<>^"
  587. 14223  IF NE = 0 THEN ACT$ = " 1234567890+-,.%$"
  588. 14225  PRINT ">__________<";
  589. 14230  GOTO 14500
  590. 14300  REM DOUBLE PRECISION
  591. 14310  MAX = 20
  592. 14320  ACT$ = " 1234567890-+,.%$=<>^"
  593. 14323  IF NE = 0 THEN ACT$ = " 1234567890+-,.%$"
  594. 14325  PRINT ">____________________<";
  595. 14330  GOTO 14500
  596. 14500  REM NUMBER CHECK
  597. 14505  A$ = ""
  598. 14510  K$(20) = " "
  599. 14515  KTMAX = 0
  600. 14520  FOR T9 = 1 TO MAX
  601. 14525  K$(T9) = " "
  602. 14530  NEXT T9
  603. 14535  DIG$ = "1234567890."
  604. 14540  DOTFLG = 0
  605. 14541  T2 = MAX + 1
  606. 14542  FOR T6 = 1 TO T2
  607. 14544  PRINT CHR$(CH);
  608. 14546  NEXT T6
  609. 14550  IF INKEY$ = "" GOTO 14560 ELSE GOTO 14550
  610. 14560  KT = 0
  611. 14565  REM 
  612. 14570  KT = KT + 1
  613. 14575  REM     
  614. 14580  W$ = INKEY$
  615. 14585  IF W$ = "" GOTO 14580
  616. 14590  C = ASC(W$)
  617. 14593  IF C = 0 THEN GOSUB 13600
  618. 14595  IF C = 13 GOTO 14660
  619. 14600  IF C = 17 OR C = 8 GOTO 14860
  620. 14605  IF C = 19 GOTO 14690
  621. 14610  IF C = 4 GOTO 14710
  622. 14615  IF C = 6 GOTO 14730
  623. 14620  IF C = 1 GOTO 14790
  624. 14625  IF KT > MAX GOTO 14575
  625. 14630  IF INSTR(ACT$,W$) = 0 GOTO 14890
  626. 14635  K$(KT) = W$
  627. 14645  PRINT K$(KT);
  628. 14650  IF KT > KTMAX THEN KTMAX = KT
  629. 14655  GOTO 14570
  630. 14660  REM * RETURN
  631. 14670  FOR T9 = 1 TO KTMAX
  632. 14675  A$ = A$ + K$(T9)
  633. 14676  IF K$(T9) = "^" GOTO 15830
  634. 14677  IF K$(T9) = ">" GOTO 15950
  635. 14678  IF K$(T9) = "=" GOTO 15800
  636. 14679  IF K$(T9) = "<" GOTO 15900
  637. 14680  NEXT T9
  638. 14681  IF KTMAX = 0 THEN PRINT "1";
  639. 14682  IF KTMAX = 0 THEN DT# = 1
  640. 14684  IF SPRT >< 5 THEN PRINT ""
  641. 14685  SPRT = 0
  642. 14686  IF KTMAX = 0 THEN RETURN
  643. 14687  GOTO 14905
  644. 14689  GOTO 14905
  645. 14690  REM * MOVE CURSE BACK
  646. 14695  IF KT = 1 GOTO 14575
  647. 14700  KT = KT - 1
  648. 14703  PRINT CHR$(CH);
  649. 14705  GOTO 14575
  650. 14710  REM * MOVE CURSER FORWARD
  651. 14715  IF KT >= MAX GOTO 14575
  652. 14716  IF KT > (KTMAX + 1) GOTO 14575
  653. 14718  PRINT K$(KT);
  654. 14720  KT = KT + 1
  655. 14725  GOTO 14575
  656. 14730  REM * INSERT
  657. 14733  IF KT > KTMAX GOTO 14575
  658. 14735  X9 = MAX
  659. 14740  WHILE X9 > KT
  660. 14745  X9 = X9 - 1
  661. 14750  K$(X9 + 1) = K$(X9)
  662. 14755  WEND 
  663. 14760  K$(KT) = " "
  664. 14767  KTMAX = KTMAX + 1
  665. 14769  IF KTMAX > MAX THEN KTMAX = MAX
  666. 14770  FOR T9 = KT TO KTMAX
  667. 14775  PRINT K$(T9);
  668. 14780  NEXT T9
  669. 14781  T6 = (KTMAX - KT) + 1
  670. 14782  FOR T7 = 1 TO T6
  671. 14783  PRINT CHR$(CH);
  672. 14784  NEXT T7
  673. 14785  GOTO 14575
  674. 14790  REM * DELETE 
  675. 14793  IF KT > KTMAX GOTO 14575
  676. 14794  IF KTMAX = 1 GOTO 14575
  677. 14795  K$(MAX + 1) = ""
  678. 14800  X9 = KT 
  679. 14805  WHILE X9 <= MAX
  680. 14810  K$(X9) = K$(X9 + 1)
  681. 14815  X9 = X9 + 1
  682. 14820  WEND 
  683. 14830  KTMAX = KTMAX - 1
  684. 14835  FOR T9 = KT TO KTMAX
  685. 14840  PRINT K$(T9);
  686. 14845  NEXT T9
  687. 14850  PRINT "_";
  688. 14851  T7 = (KTMAX - KT) + 2
  689. 14852  FOR T8 = 1 TO T7
  690. 14853  PRINT CHR$(CH);
  691. 14854  NEXT T8
  692. 14855  GOTO 14575
  693. 14860  REM BACKSPACE
  694. 14865  IF KT = 1 GOTO 14575
  695. 14870  KT = KT - 1
  696. 14875  PRINT CHR$(CH);
  697. 14877  K$(KT) = " " 
  698. 14880  PRINT "_";
  699. 14883  PRINT CHR$(CH);
  700. 14885  GOTO 14575
  701. 14890  REM INPUT NOT ACCEPTABLE
  702. 14895  PRINT CHR$(7);
  703. 14900  GOTO 14580
  704. 14905  REM * CLEAR STRINGS
  705. 14910  MAX = LEN(A$)
  706. 14915  D2$ = ""
  707. 14920  D1$ = ""
  708. 14925  DFLG = 0
  709. 14930  FOR Q93 = 1 TO MAX
  710. 14935  R$ = MID$(A$,Q93,1)
  711. 14940  IF INSTR(DIG$,R$) = 0 GOTO 14975
  712. 14945  IF R$ = "." OR DFLG = 1 GOTO 14965
  713. 14950  IF DFLG = 1 GOTO 14965
  714. 14955  D2$ = D2$ + R$
  715. 14960  GOTO 14975
  716. 14965  D1$ = D1$ + R$
  717. 14970  DFLG = 1
  718. 14975  NEXT Q93
  719. 14980  DA# = VAL(D2$)
  720. 14985  D1# = VAL(D1$)
  721. 14990  DT# = DA# + D1#
  722. 14995  IF K$(1) = "-" THEN DT# =  -DT#   
  723. 14997  RETURN
  724. 15000  REM * ALPHANUMERIC CHECK
  725. 15010  MAX = FL(A,Q)
  726. 15020  GOTO 15040
  727. 15030  REM * MAX SET IN PROGRAM
  728. 15040  A$ = ""
  729. 15050  PRINT ">"; 
  730. 15060  FOR N9 = 1 TO MAX
  731. 15065  K$(N9) = ""
  732. 15070  PRINT "_";
  733. 15080  NEXT N9
  734. 15090  PRINT "<";
  735. 15100  T2 = MAX + 1
  736. 15110  FOR T4 = 1 TO T2
  737. 15120  PRINT CHR$(CH);
  738. 15125  NEXT T4
  739. 15130  KT = 0
  740. 15135  KTMAX = 1
  741. 15140  REM * CHECK ALFANUMERIC INPUT FOR LENGTH
  742. 15150  KT = KT + 1
  743. 15160  PRINT TAB(KT+1)"";
  744. 15170  K$ = INKEY$
  745. 15180  IF K$ = "" GOTO 15170
  746. 15190  C = ASC(K$)
  747. 15195  IF C = 0 THEN GOSUB 13600
  748. 15200  IF C = 13 GOTO 15310
  749. 15210  IF C = 17 OR C = 8 GOTO 15710
  750. 15220  IF C = 19 GOTO 15370
  751. 15230  IF C = 4  GOTO 15410
  752. 15240  IF C = 6 GOTO 15450
  753. 15250  IF C = 1 GOTO 15570
  754. 15260  IF KT > MAX GOTO 15160
  755. 15270  K$(KT) = K$
  756. 15290  PRINT K$(KT);
  757. 15295  IF KT > KTMAX THEN KTMAX = KT
  758. 15300  GOTO 15150
  759. 15310  REM * RETURN
  760. 15320  FOR T9 = 1 TO MAX
  761. 15330  A$ = A$ + K$(T9)
  762. 15332  IF K$(T9) = "^" GOTO 15830
  763. 15333  IF K$(T9) = ">" GOTO 15950
  764. 15335  IF K$(T9) = "=" GOTO 15850
  765. 15338  IF K$(T9) = "<" GOTO 15900
  766. 15340  NEXT T9
  767. 15350  PRINT "" 
  768. 15360  RETURN  
  769. 15370  REM * MOVE CURSE BACK
  770. 15380  IF KT = 1 GOTO 15160
  771. 15385  KT = KT - 1
  772. 15390  PRINT CHR$(CH);
  773. 15400  GOTO 15160
  774. 15410  REM * MOVE CURSER FORWARD
  775. 15420  IF KT >= MAX GOTO 15160
  776. 15425  IF KT >  KTMAX  GOTO 15160
  777. 15427  PRINT K$(KT);
  778. 15430  KT = KT + 1
  779. 15440  GOTO 15160
  780. 15450  REM INSERT*
  781. 15460  X9 = MAX
  782. 15470  WHILE X9 > KT
  783. 15480  X9 = X9 - 1
  784. 15490  K$(X9 + 1) = K$(X9)
  785. 15500  WEND 
  786. 15510  K$(KT) = " "
  787. 15520  KTMAX = KTMAX + 1
  788. 15525  IF KTMAX > MAX THEN KTMAX = MAX
  789. 15530  FOR T9 = KT TO KTMAX
  790. 15540  PRINT K$(T9);
  791. 15550  NEXT T9
  792. 15552  T6 = (KTMAX - KT) +1
  793. 15554  FOR T7 = 1 TO T6
  794. 15556  PRINT CHR$(CH);
  795. 15558  NEXT T7
  796. 15560  GOTO 15160
  797. 15570  REM *DELETE
  798. 15575  IF KT > KTMAX GOTO 15170
  799. 15578  IF KTMAX = 1 GOTO 15160
  800. 15580  K$(MAX + 1) = ""
  801. 15590  X9 = KT 
  802. 15600  WHILE X9 <= KTMAX
  803. 15610  K$(X9) = K$(X9 + 1)
  804. 15620  X9 = X9 + 1
  805. 15630  WEND 
  806. 15650  KTMAX = KTMAX - 1
  807. 15660  FOR T9 = KT TO KTMAX
  808. 15670  PRINT K$(T9);
  809. 15680  NEXT T9
  810. 15690  PRINT "_";
  811. 15692  T7 = (KTMAX - KT) + 2
  812. 15694  FOR T6 = 1 TO T7
  813. 15696  PRINT CHR$(CH);
  814. 15698  NEXT T6
  815. 15700  GOTO 15160
  816. 15710  REM * BACKSPACE
  817. 15720  IF KT = 1 GOTO 15160
  818. 15725  K$(KT) = " "
  819. 15730  KT = KT - 1
  820. 15735  K$(KT) = " "
  821. 15740  PRINT CHR$(CH);
  822. 15750  PRINT "_";
  823. 15755  PRINT CHR$(CH);
  824. 15760  GOTO 15160
  825. 15800  REM * SAME ENTRY AS LAST RECORD
  826. 15810  DT# = X(N)
  827. 15820  RETURN
  828. 15830  REM * SAME ENTRY AS LAST RECORD OVER ONE COLUMN
  829. 15835  DT# = X(N + 1)
  830. 15840  RETURN
  831. 15850  REM * SAME ENTRY AS LAST RECORD ALFANUMERIC
  832. 15860  A$ = CK$(N)
  833. 15870  RETURN
  834. 15900  REM RESTART DATA ENTRY*
  835. 15910  REFLG = 1
  836. 15915  IF NE = 0 GOTO 15340
  837. 15920  RETURN
  838. 15950  REM * ABORT NEW DATA ENTRY
  839. 15960  IF NE = 0 GOTO 15340
  840. 15970  ABORTFLG = 1
  841. 15980  RETURN
  842. 16000  GOSUB 13000
  843. 16010  PRINT "***********  MAKE SURE YOUR PRINTER IS ON  **************"
  844. 16020  PRINT ""
  845. 16030  PRINT "********************  WITH PAPER  ***********************"
  846. 16040  PRINT ""
  847. 16050  PRINT "**********  PRESS ANY KEY TO START PRINTING  ************"
  848. 16055  PRINT ""
  849. 16057  PRINT "     *******  PRESS THE LETTER A TO ABORT  *******"
  850. 16070  T$ = INKEY$
  851. 16073  IF T$ = "" GOTO 16070
  852. 16075  PRINT T$
  853. 16085  IF T$ = "A" OR T$ = "a" THEN GOTO 3010
  854. 16090  RETURN
  855. 16200  REM * PRINT OUT FIELDS
  856. 16205  T2 = 1
  857. 16210  FOR T = 1 TO NREC(A)
  858. 16220  PRINT TAB(T2) T;"-";FLDN$(A,T);
  859. 16230  IF T MOD 2 = 0 THEN PRINT ""
  860. 16235  IF T MOD 2 = 0 THEN T2 = -25
  861. 16237  T2 = T2 + 26
  862. 16340  NEXT T
  863. 16350  RETURN
  864. 16800  REM *  HARD DISK OPTION
  865. 16810  GOSUB 13000
  866. 16820  PRINT "****************  ARE YOU USING A HARD DISK  *******************"
  867. 16830  PRINT ""
  868. 16840  PRINT "          1 - NO , I AM USING FLOPPY DISKS"
  869. 16845  PRINT ""
  870. 16850  PRINT "          2 - YES, I AM USING A HARD DISK"
  871. 16852  PRINT "               with all my files on the hard disk"
  872. 16854  PRINT "               and the hard disk is the default drive"
  873. 16860  PRINT ""
  874. 16870  PRINT "*************  ENTER THE NUMBER THEN PRESS RETURN  *************"
  875. 16880  GOSUB 14000
  876. 16890  IF DT#<1 OR DT#>2 GOTO 16880
  877. 16900  HDISK = DT#
  878. 16910  RETURN
  879. 17000  REM
  880. 17005  RNB = 0
  881. 17010  GOSUB 13000
  882. 17020  PRINT "******************  SEARCH A SORTED FILE  *******************"
  883. 17030  PRINT ""
  884. 17040  GOSUB 16200 
  885. 17060  PRINT ""
  886. 17070  PRINT "***********  ENTER ZERO TO RETURN TO INITIAL MENU  **********"
  887. 17080  PRINT ""
  888. 17090  PRINT "************  WHAT FIELD IS THIS FILE SORTED BY  ************"
  889. 17100  GOSUB 14000
  890. 17101  IF DT# <0 OR DT# >NREC(A)  GOTO 17100
  891. 17105  SF = DT#
  892. 17110  IF SF = 0 GOTO 3010
  893. 17120  PRINT "*********  WHAT VALUE DO YOU WANT TO SEARCH FOR ?  **********"
  894. 17130  PRINT FLDN$(A,SF);"=" 
  895. 17150  ON FTY(A,SF) GOTO 17160,17200,17250,17300,17300
  896. 17160  MAX = FL(A,SF)
  897. 17162  GOSUB 15030
  898. 17164  SV$ = A$
  899. 17166  LN = LEN(A$)
  900. 17170  GOTO 17350 
  901. 17200  GOSUB 14100
  902. 17202  SV% = DT#
  903. 17205  SV$ = MKI$(SV%)
  904. 17210  GOTO 17350
  905. 17250  GOSUB 14200
  906. 17252  SV! = DT#
  907. 17255  SV$ = MKS$(SV!)
  908. 17260  GOTO 17350 
  909. 17300  GOSUB 14300
  910. 17305  SV$ = MKD$(DT#)
  911. 17350  REM START SEARCH*
  912. 17360  RN = 8192
  913. 17365  I!= RN    
  914. 17368  IF RN > MRN GOTO 17800
  915. 17370  GET #1,RN
  916. 17375  I!= I!/ 2
  917. 17376  IF FTY(A,SF) = 1 THEN XT$ = LEFT$(X$(SF),LN) ELSE XT$=X$(SF)
  918. 17377  IF I!< 1  THEN GOTO 17900
  919. 17378  IF XT$ = SV$ THEN RNB = RN
  920. 17380  IF XT$ < SV$ THEN GOTO 17500
  921. 17390  RN = RN - I!
  922. 17400  GOTO 17368
  923. 17500  RN = RN + I!
  924. 17510  GOTO 17368
  925. 17600  REM
  926. 17610  GOTO 8057
  927. 17800  REM ON ERROR ROUTINE 
  928. 17801  I!= I!/ 2
  929. 17802  IF I!< 1 GOTO 17900
  930. 17805  RN = RN - I!
  931. 17810  GOTO 17368
  932. 17900  IF XT$ = SV$ THEN GOTO 17950
  933. 17902  IF RNB > 0 THEN RN = RNB
  934. 17904  IF RNB > 0 THEN GOTO 8057 
  935. 17906  PRINT " RECORD NOT FOUND "
  936. 17910  GOTO 17000
  937. 17950  PRINT "RN = ";RN
  938. 17960  GOTO 8057
  939. 18000  REM 
  940. 18005  SFLG = 1
  941. 18010  GOSUB 13000
  942. 18020  PRINT "*********************  SEARCH  FILE  ***********************"
  943. 18030  PRINT ""
  944. 18040  GOSUB 16200 
  945. 18060  PRINT ""
  946. 18070  PRINT "***********  ENTER ZERO TO RETURN TO INITIAL MENU  **********"
  947. 18080  PRINT ""
  948. 18090  PRINT "*************  WHICH FIELD DO YOU WANT TO SEARCH  ***********"
  949. 18100  GOSUB 14000
  950. 18101  IF DT# <0 OR DT# >NREC(A)  GOTO 18100
  951. 18105  SF = DT#
  952. 18110  IF SF = 0 GOTO 3010
  953. 18120  PRINT "*********  WHAT VALUE DO YOU WANT TO SEARCH FOR ?  **********"
  954. 18130  PRINT FLDN$(A,SF);"=" 
  955. 18150  ON FTY(A,SF) GOTO 18160,18200,18250,18300,18300
  956. 18160  MAX = FL(A,SF)
  957. 18162  GOSUB 15030
  958. 18164  SV$ = A$
  959. 18166  LN = LEN(A$)
  960. 18170  GOTO 18350 
  961. 18200  GOSUB 14100
  962. 18202  SV% = DT#
  963. 18205  SV$ = MKI$(SV%)
  964. 18210  GOTO 18350
  965. 18250  GOSUB 14200
  966. 18252  SV! = DT#
  967. 18255  SV$ = MKS$(SV!)
  968. 18260  GOTO 18350 
  969. 18300  GOSUB 14300
  970. 18305  SV$ = MKD$(DT#)
  971. 18350  REM * START SEARCH
  972. 18360  GOSUB 18800
  973. 18365  FOR RN = RNSS TO MRN 
  974. 18370  GET #1,RN
  975. 18376  IF FTY(A,SF) = 1 THEN XT$ = LEFT$(X$(SF),LN) ELSE XT$=X$(SF)
  976. 18378  IF XT$ = SV$ THEN GOTO 8057
  977. 18380  NEXT RN
  978. 18390  GOTO 3010
  979. 18800  REM *  GET STARTING AND ENDING FILE
  980. 18803  PRINT ""
  981. 18805  PRINT "MINIMUM RECORD NUMBER = 1  MAXIMUM RECORD NUMBER = ";MRN
  982. 18810  PRINT "******  WHICH RECORD NUMBER DO YOU WANT TO START THE SEARCH AT  ******"
  983. 18820  GOSUB 14100
  984. 18830  IF DT#<1 OR DT#>MRN THEN 18820
  985. 18840  RNSS = DT#
  986. 18900  RETURN
  987. 20000  REM *****  GET UPPER LIMIT 
  988. 20010  GOSUB 20050
  989. 20020  GOSUB 20400
  990. 20030  GOTO 21000
  991. 20050  RNU = RN
  992. 20060  TESTH$ = TEST$
  993. 20100  WHILE TEST$ = TESTH$
  994. 20110  RNU = RNU - 1
  995. 20115  IF RNU = 0 THEN GOTO 20140
  996. 20120  GET #1,RNU
  997. 20130  WEND
  998. 20140  RNU = RNU + 1
  999. 20200  REM * GET LOWER LIMIT 
  1000. 20250  RNL = RN
  1001. 20290  GET #1,RNL
  1002. 20300  WHILE TEST$ = TESTH$
  1003. 20310  RNL = RNL + 1
  1004. 20315  IF RNL > MRN THEN GOTO 20340
  1005. 20320  GET #1,RNL
  1006. 20330  WEND
  1007. 20340  RNL = RNL - 1
  1008. 20350  RETURN
  1009. 20400  REM * SET SUMS TO ZERO
  1010. 20410  FOR T = 1 TO 28
  1011. 20420  SUM#(T) = 0
  1012. 20430  NEXT T
  1013. 20450  RETURN
  1014. 21000  REM *  PRINT REPIOTIOUS FIELDS
  1015. 21050  OFFSET = -1
  1016. 21100  FOR TH = RNU TO RNL
  1017. 21105  OFFSET = OFFSET + 1
  1018. 21110  GET #1,TH
  1019. 21120  T2 = LSTE + 1
  1020. 21130  FOR N = T2 TO NREC(A)
  1021. 21140  GOSUB 34110
  1022. 21150  NEXT N
  1023. 21160  NEXT TH
  1024. 21180  LI = 1
  1025. 21182  TB = 47
  1026. 21185  GOSUB 13050
  1027. 21190  PRINT "RECORDS";RNU;" TO ";RNL;"  *******"
  1028. 21195  RN = RNL
  1029. 21200  GOTO 8510
  1030. 26000  REM 
  1031. 26100  EFLG = 1
  1032. 26200  PRINT "**********  END OF FILE  ***********"
  1033. 26202  PRINT "**** PRESS ANY KEY TO CONTINUE ****"
  1034. 26204  IF INKEY$ = "" GOTO 26204
  1035. 26210  GOTO  3010
  1036. 26500  REM 
  1037. 26600  PRINT "**********  END OF FILE  ***********"
  1038. 26610  PRINT "**** PRESS ANY KEY TO CONTINUE ****"
  1039. 26620  IF INKEY$ = "" GOTO 26620
  1040. 26635  EFLG = 1
  1041. 26640  RETURN        
  1042. 26800  REM 
  1043. 26900  PRINT "******  RECORD NUMBER REQUESTED DOES NOT EXIST  ******"
  1044. 26910  GOTO 8020
  1045. 27000  REM * READ SCREEN TEST
  1046. 27005  GOSUB 10900
  1047. 27010  OPEN "I",#1,"SCTEST"
  1048. 27020  FOR T = 1 TO 40
  1049. 27030  INPUT #1,SCRN(T)
  1050. 27040  NEXT T
  1051. 27050  CLOSE #1
  1052. 27060  RETURN
  1053. 27070  REM * READ SCREEN DESCRIPTION
  1054. 27071  GOSUB 10900
  1055. 27072  A$ = STR$(A)
  1056. 27074  A$ = MID$(A$,2)
  1057. 27076  A$ = "SCREEN" + A$
  1058. 27080  OPEN "I",#2,A$
  1059. 27090  FOR T = 1 TO 18 
  1060. 27100  INPUT #2,SW$(T)
  1061. 27110  NEXT T
  1062. 27120  FOR T = 1 TO NREC(A)
  1063. 27130  INPUT #2,LE(T),CE(T)
  1064. 27140  IF FTY(A,T) = 2 THEN INPUT #2,LEK(T),CEK(T)
  1065. 27150  NEXT T
  1066. 27160  INPUT #2,RPT
  1067. 27170  IF RPT = 2 THEN GOSUB 27200
  1068. 27180  CLOSE #2
  1069. 27190  RETURN
  1070. 27200  INPUT #2,LSTE
  1071. 27210  T2 = LSTE + 1
  1072. 27220  FOR T = T2 TO NREC(A)
  1073. 27230  INPUT #2,SUMF(T)
  1074. 27240  NEXT T
  1075. 27245  H = 0
  1076. 27250  FOR T = 1 TO LSTE
  1077. 27260  H = FL(A,T) + H
  1078. 27270  NEXT T
  1079. 27280  FIELD #1,H AS TEST$
  1080. 27300  RETURN
  1081. 28000  REM 
  1082. 28100  GOSUB 13000
  1083. 28110  PRINT "**********  DO YOU WANT TO USE THE STANDARD OR YOUR CUSTOM SCREEN  **********"
  1084. 28115  PRINT ""
  1085. 28120  PRINT "                        1 - USE THE CUSTOM SCREEN"
  1086. 28125  PRINT ""
  1087. 28130  PRINT "                        2 - USE THE STANDARD SCREEN"
  1088. 28135  PRINT ""
  1089. 28140  PRINT "*******************  ENTER THE NUMBER THEN PRESS RETURN  ********************"
  1090. 28200  GOSUB 14000
  1091. 28210  IF DT# < 1 OR DT# > 2 THEN 28200
  1092. 28220  CSCR = DT#
  1093. 28230  IF CSCR = 1 THEN GOSUB 27070
  1094. 28300  RETURN
  1095. 29000  REM * READ IDEX SUBROUTINE
  1096. 29010  OPEN "I",#1,"IDEX"
  1097. 29020  FOR T = 1 TO MAXF
  1098. 29030  INPUT #1,D,D,D,MFLG(T)
  1099. 29040  NEXT T
  1100. 29050  CLOSE #1
  1101. 29060  RETURN
  1102. 29070  REM * READ MAX MIN DATA
  1103. 29080  A$ = STR$(A)
  1104. 29090  A$ = MID$(A$,2)
  1105. 29100  A$ = "MAXMIN" + A$
  1106. 29110  OPEN "I",#2,A$
  1107. 29120  FOR T = 1 TO NREC(A)
  1108. 29130  INPUT #2,MAXC#(T),MINC#(T)
  1109. 29140  NEXT T
  1110. 29150  CLOSE #2
  1111. 29160  RETURN
  1112. 29190  N = D
  1113. 29200  REM * CHECK MAX LIMITS
  1114. 29210  IF DT# < MINC#(N) OR DT# > MAXC#(N) THEN GOSUB 29300
  1115. 29220  RETURN
  1116. 29300  PRINT CHR$(7);
  1117. 29310  PRINT CHR$(7);
  1118. 29329  RETURN
  1119. 30000  REM * PRINT OVERLAY
  1120. 30005  GOSUB 20400
  1121. 30010  OFFSET = 0
  1122. 30100  FOR T = 1 TO 18
  1123. 30110  PRINT SW$(T)
  1124. 30120  NEXT T
  1125. 30130  RETURN
  1126. 31000  REM * PRINT FIELDS
  1127. 31010  X(N) = I#
  1128. 31100  IF LE(N) = 0 THEN RETURN
  1129. 31110  LI = LE(N) + 1 + OFFSET
  1130. 31115  TB = CE(N)
  1131. 31120  GOSUB 13050
  1132. 31130  ON FTY(A,N) GOSUB 32000,32100,32100,32100,32200
  1133. 31140  IF KEYLIST(A,N) > 0 THEN GOSUB 33000
  1134. 31145  IF SUMF(N) = 2 THEN GOSUB 39200
  1135. 31150  RETURN
  1136. 32000  REM STRINGS *
  1137. 32010  PRINT I$
  1138. 32020  RETURN
  1139. 32100  PRINT I#
  1140. 32110  RETURN
  1141. 32200  REM *$$$$
  1142. 32210  PRINT USING "**$########.##";I#
  1143. 32220  RETURN
  1144. 33000  REM * PRINT KEYS
  1145. 33100  IF LEK(N) = 0 THEN RETURN
  1146. 33110  LI = LEK(N) + 1 + OFFSET
  1147. 33120  REM
  1148. 33130  TB = CEK(N)
  1149. 33140  GOSUB 13050
  1150. 33150  T1 = KEYLIST(A,N)
  1151. 33160  PRINT L$(T1,I#)
  1152. 33170  RETURN
  1153. 34000  REM * PRINT FIELDS
  1154. 34050  GOSUB 30000
  1155. 34100  FOR N = 1 TO NREC(A)
  1156. 34102  GOSUB 34110
  1157. 34104  NEXT N
  1158. 34110  ON FTY(A,N) GOSUB 34200,34300,34500,34600,34600
  1159. 34120  GOSUB 31000
  1160. 34140  RETURN
  1161. 34200  I$ =  X$(N)
  1162. 34250  RETURN  
  1163. 34300  I#=CVI(X$(N))
  1164. 34310  X(N) = I#
  1165. 34350  RETURN
  1166. 34500  I#=CVS(X$(N))
  1167. 34550  RETURN
  1168. 34600  I#=CVD(X$(N))
  1169. 34610  X(N) = I#
  1170. 34650  RETURN
  1171. 35000  REM * PRINT OVERLAY
  1172. 35010  EFLG = 0
  1173. 35030  IF RPT = 2 THEN LPRINT "AND SUBRECORDS" ELSE LPRINT ""
  1174. 35050  GOSUB 20400
  1175. 35100  FOR T = 1 TO 18
  1176. 35110  LPRINT SW$(T);
  1177. 35115  GOSUB 35200
  1178. 35117  IF EFLG = 1 THEN RETURN
  1179. 35120  NEXT T
  1180. 35130  RETURN
  1181. 35200  REM * LPRINT FIELDS
  1182. 35210  FOR T2 = 1 TO NREC(A)
  1183. 35220  IF LE(T2) = T THEN GOSUB 36000
  1184. 35300  IF LEK(T2) = T THEN GOSUB 39000
  1185. 35400  NEXT T2
  1186. 35410  LPRINT ""
  1187. 35500  RETURN
  1188. 35600  REM * LPRINT REPEATING FIELDS
  1189. 35650  GOSUB 20050
  1190. 35655  T3 = LSTE + 1
  1191. 35657  RN = RNL
  1192. 35660  FOR TH = RNU TO RNL
  1193. 35665  GET #1,TH
  1194. 35670  FOR N = T3 TO NREC(A)
  1195. 35675  T2 = N
  1196. 35680  GOSUB 36100
  1197. 35685  IF SUMF(N) = 2 THEN SUM#(N) = SUM#(N) + I#
  1198. 35687  IF FTY(A,N) = 2 AND LEK(N) > 0 THEN GOSUB 39000
  1199. 35690  NEXT N
  1200. 35700  LPRINT ""
  1201. 35710  NEXT TH
  1202. 35750  REM * LPRINT SUMS
  1203. 35755  EFLG = 1
  1204. 35760  FOR N = LSTE TO NREC(A)
  1205. 35770  IF SUMF(N) = 2 THEN GOSUB 35900
  1206. 35780  NEXT N
  1207. 35790  RETURN
  1208. 35900  REM 
  1209. 35905  TB = CE(N)
  1210. 35906  LPRINT TAB(TB);
  1211. 35907  IF FTY(A,N) = 5 THEN GOTO 35950
  1212. 35910  LPRINT TAB(TB) SUM#(N);
  1213. 35920  RETURN
  1214. 35950  LPRINT USING "**$########.##";SUM#(N);
  1215. 35960  RETURN
  1216. 36000  REM * LPRINT FIELDS
  1217. 36050  N = T2
  1218. 36060  IF RPT = 2 AND N > LSTE THEN GOTO 35600
  1219. 36100  ON FTY(A,T2) GOSUB 34200,34300,34500,34600,34600
  1220. 36200  GOTO 37000
  1221. 37000  REM * PRINT FIELDS
  1222. 37115  TB = CE(T2)
  1223. 37125  LPRINT TAB(TB) "";
  1224. 37130  ON FTY(A,T2) GOSUB 38010,38100,38100,38100,38200
  1225. 37150  RETURN
  1226. 38000  REM STRINGS *
  1227. 38010  LPRINT I$;
  1228. 38020  RETURN
  1229. 38100  LPRINT I#;
  1230. 38110  RETURN
  1231. 38200  REM * $$$$
  1232. 38210  LPRINT USING "**$########.##";I#;
  1233. 38220  RETURN
  1234. 39000  REM  * PRINT KEYS
  1235. 39010  ON FTY(A,T2) GOSUB 34200,34300,34500,34600,34600
  1236. 39090  N = T2
  1237. 39130  TB = CEK(T2)
  1238. 39140  LPRINT TAB(TB) "";
  1239. 39150  T1 = KEYLIST(A,T2)
  1240. 39160  LPRINT L$(T1,I#);
  1241. 39170  RETURN
  1242. 39200  REM * PRINT TOTALS
  1243. 39300  SUM#(N) = SUM#(N) + I#
  1244. 39310  LI = 19
  1245. 39320  GOSUB 13050
  1246. 39330  IF FTY(A,N) = 5 THEN GOTO 39600
  1247. 39400  PRINT SUM#(N);
  1248. 39410  RETURN
  1249. 39600  REM $$$$$
  1250. 39610  PRINT USING "**$########.##";SUM#(N);
  1251. 39620  RETURN
  1252. 40000  REM * NEW INPUT
  1253. 40002  ABORTFLG = 0
  1254. 40008  IF REALFLG(A) = 2 THEN GOSUB 60200
  1255. 40010  GOSUB 13000
  1256. 40015  IF DATAIN = 1 GOTO 40500
  1257. 40017  GOSUB 40020
  1258. 40018  GOTO 40500
  1259. 40020  REM  READ INPUT DATA 
  1260. 40021  GOSUB 49000
  1261. 40022  GOSUB 10900
  1262. 40025  A$ = STR$(A)
  1263. 40027  A$ = MID$(A$,2)
  1264. 40030  N$ = "IPUTD"+A$
  1265. 40040  OPEN "I",#2,N$     
  1266. 40050  INPUT #2,NREC(A)
  1267. 40060  FOR N3= 1 TO NREC(A)
  1268. 40062  N = N3
  1269. 40070  INPUT #2,IOPT(N)
  1270. 40080  ON IOPT(N) GOTO 40090,40120,40150,40210,40240,40270,40430,40370,40370,40430,40430,40430,40210
  1271. 40085  GOTO 40450
  1272. 40090  REM OPERATOR ENTRY*
  1273. 40100  INPUT #2,PROMPT$(N)
  1274. 40110  GOTO 40450
  1275. 40120  REM GET FROM ANOTHER FILE*
  1276. 40130  INPUT #2,IFN(N),IFLD(N),IRNFLD(N)
  1277. 40132  GFLG(IFN(N)) = 1
  1278. 40134  GFLG(IFLD(N)) = 1
  1279. 40136  GFLG(IRNFLD(N)) = 1
  1280. 40140  GOTO 40450
  1281. 40150  REM ADD PREVIOUS FIELDS*
  1282. 40160  INPUT #2,NOS(N)
  1283. 40170  FOR T = 1 TO NOS(N)
  1284. 40180  INPUT #2,ADDFLD(N,T)
  1285. 40185  GFLG(ADDFLD(N,T)) = 1
  1286. 40190  NEXT T
  1287. 40200  GOTO 40450
  1288. 40210  REM SUBTRACT PREVIOUS FIELDS*
  1289. 40220  INPUT #2, SUBX(N),SUBY(N)
  1290. 40222  GFLG(SUBX(N)) = 1
  1291. 40224  GFLG(SUBY(N)) = 1
  1292. 40230  GOTO 40450
  1293. 40240  REM MULTIPLY FIELDS*
  1294. 40250  INPUT #2, MULX(N),MULY(N)
  1295. 40252  GFLG(MULX(N)) = 1
  1296. 40254  GFLG(MULY(N)) = 1
  1297. 40260  GOTO 40450
  1298. 40270  REM GET FROM A TABLE*
  1299. 40280  INPUT #2,TX(1,N),TX(2,N),TX(3,N),TX(4,N),TX(5,N),TX(6,N)
  1300. 40282  GFLG(TX(2,N)) = 1
  1301. 40283  GFLG(TX(4,N)) = 1
  1302. 40284  GFLG(TX(5,N)) = 1
  1303. 40285  GFLG(TX(6,N)) = 1
  1304. 40290  TTBL = 5
  1305. 40310  GOTO 40450
  1306. 40370  REM MAXIMUM*
  1307. 40380  INPUT #2,NOS(N)
  1308. 40390  FOR T = 1 TO NOS(N)
  1309. 40400  INPUT #2,MAXMIN(N,T)
  1310. 40405  GFLG(MAXMIN(N,T)) = 1
  1311. 40410  NEXT T
  1312. 40420  GOTO 40450
  1313. 40430  REM CONSTANT*
  1314. 40440  INPUT #2,KC(N),CFLD(N)
  1315. 40445  GFLG(CFLD(N)) = 1
  1316. 40450  NEXT N3   
  1317. 40460  CLOSE #2
  1318. 40470  DATAIN = 1
  1319. 40480  RETURN
  1320. 40500  REM OPEN SECOND FILE*
  1321. 40505  IF TWOOPEN = 1 THEN 40637
  1322. 40507  TWOOPEN = 1
  1323. 40510  FOR T = 1 TO NREC(A)
  1324. 40520  IF IOPT(T) = 2 GOTO 40600
  1325. 40530  NEXT T
  1326. 40540  GOTO 40640
  1327. 40600  B = IFN(T)
  1328. 40602  AHLD = A
  1329. 40604  A = B
  1330. 40610  PRINT F$(B), " SECOND FILE FOR CUSTOM INPUT "
  1331. 40620  GOSUB 2300
  1332. 40625  A = AHLD
  1333. 40630  GOSUB 2550
  1334. 40635  GOSUB 7950
  1335. 40637  IF TAXIN = 1 THEN 41000
  1336. 40638  TAXIN = 1
  1337. 40640  FOR T = 1 TO NREC(A)
  1338. 40650  IF IOPT(T) = 6 GOTO 40800
  1339. 40660  NEXT T
  1340. 40670  GOTO 41000
  1341. 40800  GOSUB 45000
  1342. 41000  REM CUSTOM INPUT ROUTINE*
  1343. 41010  GOSUB 13000
  1344. 41012  OFFSET = 0
  1345. 41014  IF REALFLG(A) = 2 AND RN <= MRN THEN GOSUB 61300
  1346. 41015  PRINT "*****************  FILE NAME :";F$(A);"  ";"RECORD NUMBER :";RN;" ****************"
  1347. 41030  IF CSCR = 1 THEN GOSUB 30000
  1348. 41080  LI = 25
  1349. 41082  GOSUB 13100
  1350. 41085  PRINT "[ = SAME AS LAST RECORD , < BACK UP , > ABORT THIS RECORD , ^ EQUALLAST OVER 1]";
  1351. 41087  GOTO 41130
  1352. 41092  LI = 20
  1353. 41093  GOSUB 13100
  1354. 41094  PRINT "                                                                              "
  1355. 41095  PRINT "                                                                              "
  1356. 41096  PRINT "                                                                              "
  1357. 41097  PRINT "                                                                              "
  1358. 41100  PRINT "                                                                             "; 
  1359. 41110  LI = 20
  1360. 41115  GOSUB 13100
  1361. 41120  PRINT "ON FIELD NUMBER : ";N;" FIELD NAME : ";FLDN$(A,N);" : "
  1362. 41125  RETURN
  1363. 41130  N = 1 
  1364. 41133  WHILE N <= NREC(A)
  1365. 41135  REFLG = 0
  1366. 41137  IF N < 1 THEN N = 1
  1367. 41140  ON IOPT(N) GOSUB 41200,41400,41600,41800,42000,42200,42600,42800,43000,43200,43400,43600,41800,53000,54000,55000,56000,57000,58000,59000
  1368. 41150  GOSUB 43800
  1369. 41155  N = N + 1
  1370. 41160  WEND
  1371. 41165  GOTO 44910
  1372. 41170  REM * BACK UP FIELDS UNTIL IOPT = 1
  1373. 41175  N = N - 1
  1374. 41180  IF N < 1 THEN 41133
  1375. 41185  IF IOPT(N) <> 1 THEN 41175
  1376. 41190  GOTO 41133
  1377. 41200  REM *  OPERATOR ENTRY
  1378. 41202  NE = 1
  1379. 41205  GOSUB 41092
  1380. 41210  PRINT PROMPT$(N)
  1381. 41215  REFLG = 0
  1382. 41220  IF FTY(A,N) = 1 GOTO 41300
  1383. 41230  ON FTY(A,N) GOSUB 15000,14100,14200,14300,14300
  1384. 41234  IF REFLG = 1 THEN GOTO 41170
  1385. 41235  IF ABORTFLG = 1 GOTO 7000 
  1386. 41236  IF MFLG(A) = 2 AND FTY(A,N) <> 1 THEN GOSUB 29200
  1387. 41237  T2 = KEYLIST(A,N)
  1388. 41238  T3 = MAXK(T2)
  1389. 41239  REM  IF KY(A,N) = 2 AND (DT# < 1 OR DT# > T3) GOTO 41230
  1390. 41240  I# = DT# 
  1391. 41245  NE = 0
  1392. 41250  RETURN     
  1393. 41298  REFLG = 0
  1394. 41300  Q = N    
  1395. 41302  GOSUB 15000
  1396. 41303  IF ABORTFLG = 1 GOTO 7000
  1397. 41304  I$ = A$
  1398. 41306  NE = 0
  1399. 41308  IF REFLG = 1 GOTO 41170
  1400. 41310  RETURN    
  1401. 41400  REM GET FROM ANOTHER FILE*
  1402. 41402  FLD = IFLD(N)
  1403. 41404  T = IRNFLD(N)
  1404. 41406  RN2= X(T)
  1405. 41407  IF RN2 > MRNS THEN GOTO 48000
  1406. 41408  GET #2,RN2
  1407. 41409  B = IFN(N)
  1408. 41420  ON FTY(B,FLD) GOTO 41422,41460,41500,41550,41550
  1409. 41422  I$ = Y$(FLD)
  1410. 41430  RETURN      
  1411. 41460  Y$ = Y$(FLD)
  1412. 41465  I% = CVI(Y$)
  1413. 41467  I# = I%
  1414. 41470  RETURN     
  1415. 41500  I! = CVS(Y$(FLD))
  1416. 41505  I# = I!
  1417. 41510  RETURN     
  1418. 41550  I# = CVD(Y$(FLD))
  1419. 41560  GOTO 43800
  1420. 41600  REM ADD PREVIOUS FIELDS*
  1421. 41605  I# = 0
  1422. 41610  FOR T = 1 TO NOS(N)
  1423. 41620  T2 = ADDFLD(N,T)
  1424. 41630  I# = I# + X(T2)
  1425. 41640  NEXT T
  1426. 41650  RETURN    
  1427. 41800  REM SUBTRACT FIELDS
  1428. 41810  T1 = SUBX(N)
  1429. 41820  T2 = SUBY(N)
  1430. 41830  IF IOPT(N) = 4 THEN I# = X(T1) - X(T2) ELSE I# = X(T1)/X(T2)
  1431. 41840  RETURN    
  1432. 42000  REM MULTIPLY FIELDS
  1433. 42010  T1 = MULX(N)
  1434. 42020  T2 = MULY(N)
  1435. 42030  I# = X(T1) * X(T2)
  1436. 42040  RETURN     
  1437. 42200  REM GET FROM A TABLE
  1438. 42210  ON TX(1,N) GOSUB 42400,42450
  1439. 42220  ON TX(3,N) GOSUB 42500,42550
  1440. 42230  Y = TX(5,N)
  1441. 42240  MSS = X(Y)
  1442. 42250  Y = TX(6,N)
  1443. 42260  PAY# = X(Y)
  1444. 42270  GOSUB 45500
  1445. 42272  I# = TTAX#
  1446. 42290  RETURN     
  1447. 42400  FSS = TX(2,N)
  1448. 42410  RETURN
  1449. 42450  Y = TX(2,N)
  1450. 42460  FSS = X(Y)
  1451. 42470  RETURN
  1452. 42500  PPS = TX(4,N)
  1453. 42510  RETURN
  1454. 42550  Y = TX(4,N)
  1455. 42560  PPS = X(Y)
  1456. 42570  RETURN
  1457. 42600  REM CONSTANT
  1458. 42610  I# = KC(N)
  1459. 42620  RETURN    
  1460. 42800  REM MAXIMUM
  1461. 42802  T2 = MAXMIN(N,1)
  1462. 42804  I# = X(T2)
  1463. 42810  FOR T = 2 TO NOS(N)
  1464. 42820  T2 = MAXMIN(N,T)
  1465. 42830  IF X(T2) > I# THEN I# = X(T2)
  1466. 42840  NEXT T
  1467. 42850  RETURN        
  1468. 43000  REM MINIMUM*
  1469. 43002  T2 = MAXMIN(N,1)
  1470. 43004  I# = X(T2)
  1471. 43010  FOR T = 2 TO NOS(N)
  1472. 43020  T2 = MAXMIN(N,T)
  1473. 43030  IF X(T2) < I#  THEN I# = X(T2)
  1474. 43040  NEXT T
  1475. 43050  RETURN       
  1476. 43200  REM MULTIPLY BY A CONSTANT*
  1477. 43210  T = CFLD(N)
  1478. 43220  I# = KC(N) * X(T)
  1479. 43230  RETURN    
  1480. 43400  REM ADD A CONSTANT*
  1481. 43410  T = CFLD(N)
  1482. 43420  I# = KC(N) + X(T)
  1483. 43430  RETURN    
  1484. 43600  REM SUBTRACT A CONSTANT
  1485. 43610  T = CFLD(N)
  1486. 43620  I# = X(T) - KC(N)
  1487. 43630  RETURN     
  1488. 43800  REM LSET
  1489. 43810  ON FTY(A,N) GOTO 43900,44000,44100,44200,44200
  1490. 43900  REM STRING*
  1491. 43910  LSET X$(N) = I$
  1492. 43920  CK$(N) = I$
  1493. 43990  GOTO 44400
  1494. 44000  REM INTEGER *           
  1495. 44020  LSET X$(N) = MKI$(I#)
  1496. 44030  GOTO 44400
  1497. 44100  REM SINGLE PRECISION* 
  1498. 44110  I! = I#
  1499. 44120  LSET X$(N) = MKS$(I#)
  1500. 44130  GOTO 44400
  1501. 44200  REM DOUBLE PRECISION*
  1502. 44210  LSET X$(N) = MKD$(I#)
  1503. 44400  X(N) = I#
  1504. 44410  IF CALFLG = 5 THEN RETURN
  1505. 44500  IF CSCR = 1 THEN GOSUB 31000
  1506. 44501  IF CSCR = 1 THEN GOTO 44900
  1507. 44502  IF N < 19 THEN HT = N + 1 
  1508. 44503  IF N >= 19 THEN HT = N MOD 18 + 2
  1509. 44504  LI = HT
  1510. 44505  GOSUB 13100
  1511. 44506  IF N <18 GOTO 44510
  1512. 44507  PRINT "                                                                              ";
  1513. 44508  GOSUB 13100   
  1514. 44510  PRINT N;TAB(5) FLDN$(A,N);    
  1515. 44515  IF KEYLIST(A,N) > 0 GOTO 44800
  1516. 44520  IF FTY(A,N) = 1 GOTO 44600
  1517. 44525  IF FTY(A,N) = 5 GOTO 44700
  1518. 44530  PRINT TAB(25) I#
  1519. 44535  X(N) = I#
  1520. 44540  GOTO 44900
  1521. 44600  PRINT TAB(26) I$
  1522. 44610  GOTO 44900
  1523. 44700  PRINT TAB(26);
  1524. 44710  PRINT USING "**$########.##";I#
  1525. 44715  X(N) = I#
  1526. 44720  GOTO 44900
  1527. 44800  REM KEYLIST
  1528. 44810  T1 = KEYLIST(A,N)
  1529. 44820  W$ = L$(T1,I#)
  1530. 44830  PRINT TAB(25) I#;
  1531. 44835  X(N) = I#
  1532. 44840  PRINT TAB(30) "key  ";W$
  1533. 44900  RETURN 
  1534. 44910  PUT #1,RN
  1535. 44912  IF REALFLG(A) = 2 THEN GOSUB 60300
  1536. 44913  IF REALFLG(A) = 2 AND RN <= MRN THEN GOSUB 61400
  1537. 44915  IF RN > MRN THEN MRN = RN
  1538. 44920  LI = 20
  1539. 44925  GOSUB 13100
  1540. 44930  PRINT "***********************  OPTIONS :  ************************                  "
  1541. 44940  PRINT "   1 - ENTER NEXT RECORD          3 - CORRECT THIS RECORD                     "
  1542. 44950  PRINT "   2 - ENTER ANOTHER RECORD       4 - ENTER A SUBRECORD                       "
  1543. 44960  PRINT "***************  0 - RETURN TO FILE OPTIONS   **************                  "
  1544. 44962  SPRT = 5
  1545. 44965  GOSUB 14000
  1546. 44967  IF DT# <0 OR DT# >4 GOTO 44920
  1547. 44970  TH = DT#
  1548. 44975  IF TH = 2 THEN RETURN
  1549. 44980  IF TH = 0 THEN GOTO 3010
  1550. 44985  IF TH = 3 THEN GOSUB 9000 
  1551. 44987  IF TH = 3 THEN GOTO 44920
  1552. 44988  IF TH = 4 AND RPT <> 2 THEN 44996
  1553. 44989  IF TH = 4 THEN GOTO 52000
  1554. 44990  RN = RN + 1
  1555. 44995  GOTO 41000
  1556. 44996  LI = 24
  1557. 44997  GOSUB 13100
  1558. 44998  PRINT TAB(10) "SUBRECORDS ARE NOT SET UP ON THIS FILE";
  1559. 44999  GOTO 44920
  1560. 45000  REM 
  1561. 45001  IF HDISK = 2 THEN GOTO 45010
  1562. 45002  GOSUB 13000
  1563. 45004  PRINT "      PUT THE FLOPPY DISK WITH THE TAX SCHEDULE ON IT IN"
  1564. 45005  PRINT "                IN THE DEFAULT DISK DRIVE "
  1565. 45006  PRINT ""
  1566. 45007  PRINT "         ****  THEN PRESS ANY KEY TO CONTINUE  ****   "
  1567. 45008  IF INKEY$ = "" THEN GOTO 45008
  1568. 45010  OPEN "R",#3,"TAXSCH",82
  1569. 45015  FIELD #3,40 AS D$,2 AS FD$,2 AS PP$,2 AS MS$,8 AS MIN$,8 AS MAX$,8 AS TX$,4 AS PCT$,8 AS OVR$
  1570. 45018  GOSUB 7900
  1571. 45020  FOR T7 = 1 TO 1000
  1572. 45040  IF T7 > MRN2 GOTO 45160
  1573. 45050  GET #3,T7
  1574. 45070  FS(T7) = CVI(FD$)
  1575. 45080  PP(T7) = CVI(PP$)
  1576. 45090  MS(T7) = CVI(MS$)
  1577. 45100  MIND#(T7) = CVD(MIN$)
  1578. 45110  MAXD#(T7) = CVD(MAX$)
  1579. 45120  TAX#(T7) = CVD(TX$)
  1580. 45130  PCT!(T7) = CVS(PCT$)
  1581. 45140  OVR#(T7) = CVD(OVR$)
  1582. 45150  NEXT T7
  1583. 45160  REM
  1584. 45170  GOTO 45200
  1585. 45200  REM
  1586. 45210  TMAX = T7 - 1
  1587. 45215  CLOSE #3
  1588. 45218  TTBL = 5
  1589. 45220  RETURN
  1590. 45230  REM
  1591. 45240  REM
  1592. 45250  REM
  1593. 45260  REM
  1594. 45270  REM
  1595. 45500  REM
  1596. 45510  FOR T7 = 1 TO TMAX
  1597. 45520  IF FS(T7) = FSS THEN GOTO 45530 ELSE GOTO 45610
  1598. 45530  IF PP(T7) = PPS THEN GOTO 45540 ELSE GOTO 45610
  1599. 45540  IF MS(T7) = MSS THEN GOTO 45550 ELSE GOTO 45610
  1600. 45550  IF PAY# < MIND#(T7) GOTO 45610
  1601. 45560  IF PAY# > MAXD#(T7) GOTO 45610
  1602. 45570  PAYEX# = PAY# - OVR#(T7)
  1603. 45580  TXE# = PAYEX# * PCT!(T7) / 100
  1604. 45590  TTAX# = TAX#(T7) + TXE#
  1605. 45600  GOTO 45680
  1606. 45610  NEXT T7
  1607. 45620  PRINT "++++++  PROPER TAX TABLE NOT FOUND  ++++++"
  1608. 45630  PRINT "CHECK : FEDERAL OR STATE NUMBER ";FSS
  1609. 45640  PRINT "        PAY PERIOD NUMBER       ";PPS
  1610. 45650  PRINT "        MARRIED/SINGLE NUMBER   ";MSS
  1611. 45660  PRINT "        PAY                     ";PAY
  1612. 45670  PRINT "*****  PRESS ANY KEY TO CONTINUE  ******"
  1613. 45672  IF INKEY$ = "" GOTO 45672
  1614. 45674  GOTO 3010
  1615. 45680  REM RETURNS TTAX*
  1616. 45690  RETURN 
  1617. 46000  REM CROSS CHECK FIELD
  1618. 46010  IF DATAIN >< 1 THEN GOSUB 40020
  1619. 46020  REM
  1620. 46030  REM
  1621. 46100  GET #1,RN
  1622. 46130  FOR N2= 1 TO NREC(A)
  1623. 46133  N = N2
  1624. 46135  REM
  1625. 46140  ON IOPT(N) GOSUB 46200,46200,41600,41800,42000,46200,42600,42800,43000,43200,43400,43600,41800,53000,54000,55000,56000,57000,58000,59000
  1626. 46145  REM 
  1627. 46150  GOSUB 43800
  1628. 46160  NEXT N2
  1629. 46162  PUT #1,RN
  1630. 46165  RETURN    
  1631. 46200  ON FTY(A,N) GOTO 46220,46300,46400,46500,46500
  1632. 46220  I$ = X$(N)
  1633. 46230  RETURN
  1634. 46300  I% = CVI(X$(N))
  1635. 46310  I# = I%
  1636. 46320  RETURN
  1637. 46400  I! = CVS(X$(N))
  1638. 46410  I# = I!
  1639. 46420  RETURN
  1640. 46500  I# = CVD(X$(N))
  1641. 46510  RETURN
  1642. 47000  REM
  1643. 47050  CALFLG = 5
  1644. 47100  GOSUB 13000
  1645. 47110  PRINT "*******  RECALCULATE THE FIELDS IN A FILE OPTION  *******"
  1646. 47120  PRINT ""
  1647. 47130  PRINT "         Use only if you know what you are doing "
  1648. 47140  PRINT ""
  1649. 47150  PRINT "MINIMUM RECORD NUMBER : 1   MAXIMUM RECORD NUMBER : ";MRN
  1650. 47160  PRINT ""
  1651. 47190  PRINT "***********  DO YOU WANT TO USE THIS OPTION  ************"
  1652. 47200  PRINT "          1 - NO, RETURN TO FILE OPTION"
  1653. 47300  PRINT "          2 - YES, I WANT TO USE THIS OPTION "
  1654. 47310  PRINT "*********  Enter the number then Press Return  **********"
  1655. 47320  GOSUB 14000
  1656. 47330  IF DT# < 1 OR DT# > 2 THEN 47320
  1657. 47340  IF DT# = 1 THEN 3010
  1658. 47400  FOR RN = 1 TO MRN
  1659. 47430  GOSUB 46000 : PRINT "ON RECORD ";RN
  1660. 47450  NEXT RN
  1661. 47470  GOTO 3010
  1662. 48000  REM
  1663. 48100  REM
  1664. 48110  PRINT " ++++++  ERROR   +++++++"
  1665. 48120  PRINT "RECORD NUMBER  ";RN2;" IN FILE ";F$(B);" DOES NOT EXIST"
  1666. 48140  PRINT "YOU PROBABLY ENTERED FIELD ";IRNFLD(N);" WRONG"
  1667. 48160  PRINT "*********  PRESS ANY KEY TO CONTINUE  ********"
  1668. 48170  IF INKEY$ = "" GOTO 48170
  1669. 48180  GOTO 40000
  1670. 49000  REM * SET GFLG TO ZERO
  1671. 49100  FOR T = 1 TO 28
  1672. 49110  GFLG(T) = 0
  1673. 49120  NEXT T
  1674. 49130  RETURN
  1675. 50000  REM INTRO
  1676. 50010  GOSUB 13000
  1677. 50100  PRINT "                  M A I N     P R O G R A M    3.0   "
  1678. 50105  PRINT ""
  1679. 50110  PRINT "         Copyright 1984 by Potomac Pacific Engineering Inc."
  1680. 50120  PRINT ""
  1681. 50130  PRINT "This program is licensed FREE to all users with some restrictions "
  1682. 50140  PRINT "YOU MUST READ THE LICENSE CONDITIONS PRIOR TO USING THIS PROGRAM"
  1683. 50165  PRINT "        See the manual for more information on the license."
  1684. 50167  PRINT ""
  1685. 50950  PRINT "*****************  PRESS ANY KEY TO CONTINUE  ******************";
  1686. 50960  IF INKEY$ = "" GOTO 50960
  1687. 50970  RETURN
  1688. 51000  REM *******  DONE
  1689. 51100  CLOSE
  1690. 51105  GOSUB 13000
  1691. 51110  PRINT " -BYE, Have a nice day
  1692. 51120  END
  1693. 52000  REM *  SUB RECORD INPUT
  1694. 52010  LI = 1
  1695. 52015  TB = 60
  1696. 52020  GOSUB 13110
  1697. 52030  PRINT "ON SUBRECORD ";(RN+1)
  1698. 52100  OFFSET = OFFSET + 1
  1699. 52110  RN = RN + 1
  1700. 52115  IF REALFLG(A) = 2 AND RN <= MRN THEN GOSUB 61300
  1701. 52120  T2 = LSTE + 1
  1702. 52130  FOR N = T2 TO NREC(A)
  1703. 52135  REFLG = 0
  1704. 52140  ON IOPT(N) GOSUB 41200,41400,41600,41800,42000,42200,42600,42800,43000,43200,43400,43600,41800,53000,54000,55000,56000,57000,58000,59000
  1705. 52150  GOSUB 43800
  1706. 52160  NEXT N 
  1707. 52165  GOTO 44910
  1708. 53000  REM  SPACE FOR CUSTOM INPUT OPTION # 14
  1709. 53990  RETURN
  1710. 54000  REM  SPACE FOR CUSTOM INPUT OPTION # 15
  1711. 54990  RETURN
  1712. 55000  REM SPACE FOR CUSTOM INPUT OPTION # 16
  1713. 55990  RETURN
  1714. 56000  REM SPACE FOR CUSTOM INPUT OPTION # 17
  1715. 56990  RETURN
  1716. 57000  REM SPACE FOR CUSTOM INPUT OPTION # 18
  1717. 57990  RETURN
  1718. 58000  REM SPACE FOR CUSTOM INPUT OPTION # 19
  1719. 58990  RETURN
  1720. 59000  REM SPACE FOR CUSTOM INPUT OPTION # 20
  1721. 59990  RETURN
  1722. 60000  REM *READ REALTIME OPTIONS
  1723. 60010  OPEN "I",#1,"REALTIME"
  1724. 60020  FOR T = 1 TO MAXF
  1725. 60030  INPUT #1,REALFLG(T)
  1726. 60040  NEXT T
  1727. 60050  CLOSE #1
  1728. 60060  RETURN
  1729. 60070  REM * READ REALTIME DATA
  1730. 60080  A$ = STR$(A)
  1731. 60090  A$ = MID$(A$,2)
  1732. 60100  A$ = "REAL" + A$
  1733. 60110  OPEN "I",#3,A$
  1734. 60120  INPUT #3,TFILE,FLD1,FLD2,TFLD1,TFLD2,TFLD3,TFLD4,ADSUB1,ADSUB2,ADSUB3,ADSUB4,TGTRN
  1735. 60130  CLOSE #3
  1736. 60140  RETURN
  1737. 60200  REM * OPEN REALTIME FILE
  1738. 60202  IF ROPEN = 5 THEN RETURN
  1739. 60205  GOSUB 13000
  1740. 60210  AHLD = A
  1741. 60220  A = TFILE
  1742. 60230  C = TFILE
  1743. 60235  PRINT F$(C);"   FILE FOR REALTIME TRANSFER "
  1744. 60240  GOSUB 2300
  1745. 60245  C = TFILE
  1746. 60250  GOSUB 2580
  1747. 60260  A = AHLD
  1748. 60265  ROPEN = 5
  1749. 60270  RETURN
  1750. 60300  REM * PUT DATA ON REALTIME FILE
  1751. 60310  IF REALFLG(A) >< 2 THEN RETURN
  1752. 60330  REM *** CONTINUE
  1753. 60340  IF ROPEN < 5 THEN GOSUB 60200
  1754. 60400  T3 = X(TGTRN)
  1755. 60410  GET #3,T3
  1756. 60415  IF CTK = 5 THEN 60600
  1757. 60420  T1# = CVD(Z$(TFLD1))
  1758. 60430  T2# = X(FLD1)
  1759. 60440  IF ADSUB1 = 2 THEN T2# = -1 * T2#
  1760. 60450  LSET Z$(TFLD1) = MKD$(T1# + T2#)
  1761. 60460  IF TFLD2 = 0 THEN 60600
  1762. 60520  T1# = CVD(Z$(TFLD2))
  1763. 60540  IF ADSUB2 = 2 THEN T2# = -1 * T2#
  1764. 60550  LSET Z$(TFLD2) = MKD$(T1# + T2#)
  1765. 60600  REM * SECOND TRANSFER
  1766. 60605  IF CTK = 4 THEN 60900
  1767. 60610  IF FLD2 = 0 THEN 60900
  1768. 60620  T1# = CVD(Z$(TFLD3))
  1769. 60630  T2# = X(FLD2)
  1770. 60640  IF ADSUB3 = 2 THEN T2# = -1 * T2#
  1771. 60650  LSET Z$(TFLD3) = MKD$(T1# + T2#)
  1772. 60660  IF TFLD4 = 0 THEN 60900
  1773. 60720  T1# = CVD(Z$(TFLD4))
  1774. 60740  IF ADSUB4 = 2 THEN T2# = -1 * T2#
  1775. 60750  LSET Z$(TFLD4) = MKD$(T1# + T2#)
  1776. 60900  PUT #3,T3
  1777. 60920  CTK = 1
  1778. 60980  RETURN
  1779. 61000  REM *  CORECT DATA ON REALTIME FILE
  1780. 61050  CTK = 4
  1781. 61060  XHLD1 = X(N)
  1782. 61100  X(N) = I# - X(N)
  1783. 61120  GOSUB 60300
  1784. 61130  X(N) = XHLD1
  1785. 61140  RETURN
  1786. 61200  XHLD1 = X(N)
  1787. 61205  X(N) = I# - X(N)
  1788. 61215  CTK = 5
  1789. 61220  GOSUB 60300
  1790. 61230  X(N) = XHLD1
  1791. 61240  RETURN
  1792. 61300  REM * CORRECT REALTIME FILE FOR OVERWRITE
  1793. 61330  GET #1,RN
  1794. 61340  X1# = CVD(X$(FLD1))
  1795. 61345  IF FLD2 = 0 THEN 61355
  1796. 61350  X2# = CVD(X$(FLD2))
  1797. 61355  X3# = CVI(X$(TGTRN))
  1798. 61360  RETURN
  1799. 61400  REM ***
  1800. 61410  XHLD1 = X(FLD1)
  1801. 61415  IF FLD2 = 0 THEN 61425
  1802. 61420  XHLD2 = X(FLD2)
  1803. 61425  XHLD3 = X(TGTRN)
  1804. 61430  X(FLD1) = -X1#
  1805. 61440  X(FLD2) = -X2#
  1806. 61445  X(TGTRN) = X3#
  1807. 61450  GOSUB 60300
  1808. 61460  X(FLD1) = XHLD1
  1809. 61465  IF FLD2 = 0 THEN 61475
  1810. 61470  X(FLD2) = XHLD2
  1811. 61475  X(TGTRN) = XHLD3
  1812. 61480  RETURN
  1813. 65000  ' metrocom-ny introduction
  1814. 65010  CLS
  1815. 65020  A$=STRING$(80,205)
  1816. 65030  PRINT A$
  1817. 65040  PRINT TAB(13)"Serving The Metropolitan New York Business Community"
  1818. 65050  COLOR 23,0,0
  1819. 65060  PRINT :PRINT TAB(22)"M-E-T-R-O-C-O-M-!  N-E-W  Y-O-R-K-!"
  1820. 65070  COLOR 7,0,0
  1821. 65080  PRINT:PRINT TAB(26)"DATA LINE (516) 486-3196"
  1822. 65090  PRINT A$
  1823. 65100  PRINT :PRINT :PRINT :PRINT :PRINT
  1824. 65110  PRINT TAB(26)"Press ANY KEY To Continue!"
  1825. 65120  A$=INKEY$:IF A$="" THEN 65120
  1826. 65130  CLS
  1827. 65140  KEY OFF 'Omit if not IBM Computer
  1828. 65150  RETURN
  1829.