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

  1. 4 DEFINT A-W,Y-Z
  2. 5 DIM F$(15),FLDN$(17,40),FTY(17,40),FL(17,40) 
  3. 13 DIM L(17),NREC(17)
  4. 16 DIM KY(17,40),KEYLIST(17,40)
  5. 35 DIM K$(80)
  6. 40 DIM SCRN(40),MFLG(40)
  7. 45 DIM REALFLG(40)
  8. 70 CH = 29
  9. 75 PRINT FRE(0)
  10. 80 GOSUB 52000
  11. 100 GOSUB 50000
  12. 200 GOTO 40000
  13. 500 REM ******* CLS
  14. 510 CLS 
  15. 520 RETURN
  16. 8000 REM ***** FILE NAME ACCEPLABLE TEST ************
  17. 8010 TEST = 1
  18. 8100 FOR Q = 1 TO LEN(A$)
  19. 8110 K$(Q) = MID$(A$,Q,1)
  20. 8120 C = ASC(K$(Q))
  21. 8130 IF C < 48 OR C > 122 THEN TEST = 4
  22. 8140 IF Q = 1 AND ( C < 65 OR C > 122 ) THEN TEST = 4
  23. 8150 NEXT Q
  24. 8190 RETURN
  25. 23780 REM *************  READ SUBROUTINE  *************
  26. 23800 OPEN "I",#1,"FFILE"
  27. 23820 INPUT #1,MAXF
  28. 23840 FOR A = 1 TO MAXF
  29. 23860 INPUT #1,A,F$(A),NREC(A),L(A)
  30. 23880 FOR N = 1 TO NREC(A)
  31. 23900 INPUT #1,FLDN$(A,N),FTY(A,N),FL(A,N)
  32. 23920 IF FTY(A,N) = 2 THEN INPUT #1,KY(A,N),KEYLIST(A,N)
  33. 23940 NEXT N
  34. 23960 NEXT A
  35. 23980 CLOSE #1
  36. 24000 RETURN
  37. 25000 REM ************ WRITE SCREEN TEST *********
  38. 25100 OPEN "O",#1,"SCTEST"
  39. 25200 FOR T = 1 TO 40
  40. 25300 WRITE #1,SCRN(T)
  41. 25400 NEXT T
  42. 25500 CLOSE #1
  43. 25600 RETURN
  44. 26000 REM ************ READ SCREEN TEST *********
  45. 26100 OPEN "I",#1,"SCTEST"
  46. 26200 FOR T = 1 TO 40
  47. 26300 INPUT #1,SCRN(T)
  48. 26400 NEXT T
  49. 26500 CLOSE #1
  50. 26600 RETURN
  51. 27000 REM **********  READ IDEX SUBROUTINE
  52. 27010 OPEN "I",#1,"IDEX"
  53. 27020 FOR T = 1 TO MAXF
  54. 27030 INPUT #1,D,D,D,MFLG(T)
  55. 27040 NEXT T
  56. 27050 CLOSE #1
  57. 27060 RETURN
  58. 27070 REM **********  WRITE IDEX SUBROUTINE
  59. 27080 OPEN "O",#1,"IDEX"
  60. 27090 FOR T = 1 TO 30
  61. 27100 WRITE #1,D,D,D,MFLG(T)
  62. 27110 NEXT T
  63. 27120 CLOSE #1
  64. 27130 RETURN
  65. 40000 REM *******  FILE DESCRIPTION MENU  *********
  66. 40060 GOSUB 500
  67. 40080 PRINT "****************  FILE DESCRIPTION MENU  ******************"
  68. 40100 PRINT ""
  69. 40120 PRINT "    0 - EXIT TO OPERATING SYSTEM"
  70. 40125 PRINT ""
  71. 40140 PRINT "    1 - ENTER A FILE DESCRIPTION"
  72. 40145 PRINT ""
  73. 40160 PRINT "    2 - READ A SINGLE FILE DESCRIPTION"
  74. 40165 PRINT ""
  75. 40180 PRINT "    3 - READ ALL FILE DESCRIPTIONS"
  76. 40185 PRINT ""
  77. 40200 PRINT "    4 - PRINT ON PAPER ONE FILE DESCRIPTION "
  78. 40205 PRINT ""
  79. 40220 PRINT "    5 - PRINT ON PAPER ALL THE FILE DESCRIPTIONS"
  80. 40240 PRINT ""
  81. 40260 PRINT "**********  ENTER THE NUMBER THEN PRESS RETURN  ************"
  82. 40280 GOSUB 60000
  83. 40282 IF DT# <0 OR DT# >5 GOTO 40280
  84. 40300 T = DT#
  85. 40310 IF T = 0 THEN 51000
  86. 40320 ON T GOTO 40620,40340,40540,40740,40960
  87. 40340 GOSUB 500
  88. 40360 PRINT "************  WHAT FILE DESCRIPTION DO YOU WANT TO READ  **********"
  89. 40380 FOR T = 1 TO MAXF
  90. 40400 PRINT T;"-";F$(T)
  91. 40420 NEXT T
  92. 40440 PRINT "***************  ENTER THE NUMBER THEN PRESS RETURN  **************"
  93. 40460 GOSUB 60000
  94. 40462 IF DT# <1 OR DT# >MAXF GOTO 40460
  95. 40480 A = DT#
  96. 40500 GOSUB 42680
  97. 40520 GOTO 40060
  98. 40540 FOR A = 1 TO MAXF
  99. 40560 GOSUB 42680
  100. 40580 NEXT A
  101. 40600 GOTO 40060
  102. 40620 GOSUB 41040
  103. 40640 GOSUB 45020
  104. 40660 GOSUB 42580
  105. 40680 GOSUB 43220
  106. 40700 GOSUB 44420
  107. 40720 GOTO 40060
  108. 40740 REM PRINT A SINGLE RECORD
  109. 40760 GOSUB 500
  110. 40780 PRINT "************  WHAT FILE DESCRIPTION DO YOU WANT PRINTED  **********"
  111. 40800 FOR T = 1 TO MAXF
  112. 40820 PRINT T;"-";F$(T)
  113. 40840 NEXT T
  114. 40860 PRINT "***************  ENTER THE NUMBER THEN PRESS RETURN  **************"
  115. 40880 GOSUB 60000
  116. 40882 IF DT# <1 OR DT# >MAXF GOTO 40880
  117. 40900 A = DT#
  118. 40920 GOSUB 43700
  119. 40940 GOTO 40060
  120. 40960 FOR A = 1 TO MAXF
  121. 40980 GOSUB 43700
  122. 41000 NEXT A
  123. 41020 GOTO 40060
  124. 41040 GOSUB 500
  125. 41060 PRINT "****************  NEW FILE DESCRIPTION ENTRY  ******************"
  126. 41080 FOR T = 1 TO MAXF
  127. 41100 PRINT T;"-";F$(T)
  128. 41120 NEXT T
  129. 41140 T1 = MAXF + 1
  130. 41160 PRINT "*****  YOU MAY RENAME AND REDEFINE ANY OF THE ABOVE FILES  *****
  131. 41180 PRINT " ----  YOU WILL LOSE ALL STORED DATA IN A FILE YOU REDEFINE  ---"
  132. 41200 PRINT "                        OR  "
  133. 41220 PRINT "-------  YOU MAY ENTER A NEW FILE WITH FILE NUMBER = ";T1;"------"
  134. 41240 PRINT ""
  135. 41260 PRINT "***********  ENTER THE FILE NUMBER THEN PRESS RETURN  ***********"
  136. 41280 PRINT ""
  137. 41300 GOSUB 60000
  138. 41302 IF DT# <1 OR DT# >T1  GOTO 41300
  139. 41320 A = DT#
  140. 41340 GOTO 44200
  141. 41360 PRINT "*****  ENTER THE FILE NAME -- 8 CHARACTERS OR LESS  *****"
  142. 41380 PRINT "---------  LETTERS AND NUMBERS ONLY , NO SPACES  --------"
  143. 41400 PRINT "-----------  FIRST CHARACTER MUST BE A LETTER  ----------"
  144. 41420 MAX = 8
  145. 41440 GOSUB 62030
  146. 41450 GOSUB 8000
  147. 41455 IF TEST = 4 GOTO 41440
  148. 41460 F$(A) = A$
  149. 41480 PRINT "********  ENTER THE NUMBER OF FIELDS IN THIS FILE  *******"   
  150. 41500 GOSUB 60000
  151. 41502 IF DT# <1 OR DT# >100 GOTO 41500
  152. 41520 NREC(A) = DT#
  153. 41540 FOR  N = 1 TO NREC(A)            
  154. 41560 GOSUB 41620
  155. 41580 NEXT N
  156. 41600 RETURN
  157. 41620 GOSUB 500
  158. 41640 PRINT "FIELD NUMBER ";N
  159. 41660 PRINT "********  ENTER THE NAME OF THIS FIELD  **********"
  160. 41680 MAX = 20
  161. 41700 GOSUB 62030
  162. 41720 FLDN$(A,N) = A$
  163. 41740 PRINT "***************  IS THIS FILELD  *****************"
  164. 41760 PRINT "                  1 - A NUMBER "
  165. 41780 PRINT "                  2 - A STRING "
  166. 41800 PRINT "******  ENTER THE NUMBER THEN PRESS RETURN  ******"
  167. 41820 GOSUB 60000
  168. 41822 IF DT# <1 OR DT# >2 GOTO 41820
  169. 41840 T = DT#
  170. 41860 ON T GOTO 41880,42420
  171. 41880 REM
  172. 41900 PRINT "******************  IS THIS NUMBER AN  *******************"
  173. 41920 PRINT "   1 - INTEGER "
  174. 41930 PRINT "       ---- MAY BE DECLARE A KEY TO A LIST
  175. 41940 PRINT "       ----  NO DECIMALS, A NUMBER FROM -32,768 TO +32,768"
  176. 41960 PRINT "   2 - SINGLE PRECISION"
  177. 41980 PRINT "       ----  DECIMALS ALLOWED,  ONLY SIX DIGITS ACCURACY"
  178. 42000 PRINT "   3 - DOUBLE PRECISION"
  179. 42020 PRINT "       ----  DECIMALS ALLOWED,  15 DIGITS ACCURACY"
  180. 42040 PRINT "   4 - DOLLARS AND CENTS "
  181. 42060 PRINT "       ----  USE FOR ALL DOLLAR AND CENTS AMOUNTS "
  182. 42080 PRINT "**********  ENTER THE NUMBER THEN PRESS RETURN  **********"
  183. 42100 GOSUB 60000
  184. 42102 IF DT# <1 OR DT# >4 GOTO 42100
  185. 42120 T = DT#
  186. 42140 ON T GOTO 42160,42240,42300,42360
  187. 42160 FTY(A,N) = 2
  188. 42180 FL(A,N) = 2
  189. 42200 GOSUB 44720
  190. 42220 GOTO 42560
  191. 42240 FTY(A,N) = 3
  192. 42260 FL(A,N) = 4
  193. 42280 GOTO 42560
  194. 42300 FTY(A,N) = 4
  195. 42320 FL(A,N) = 8
  196. 42340 GOTO 42560
  197. 42360 FTY(A,N) = 5
  198. 42380 FL(A,N) = 8
  199. 42400 GOTO 42560
  200. 42420 FTY(A,N) = 1
  201. 42440 PRINT "************  WHAT IS THE MAXIMUM LENGTH OF THE STRING  **********"
  202. 42460 PRINT "             -----  ENTER A NUMBER FROM 1 TO 55  -----
  203. 42480 PRINT "***************  ENTER THE LENGTH THEN PRESS RETURN  *************"
  204. 42500 GOSUB 60000
  205. 42502 IF DT# <1 OR DT# >55 GOTO 42500
  206. 42520 FL(A,N) = DT#
  207. 42560 RETURN
  208. 42580 L(A) = 0
  209. 42600 FOR N = 1 TO NREC(A)
  210. 42620 L(A) = L(A) + FL(A,N)
  211. 42640 NEXT N
  212. 42660 RETURN
  213. 42680 GOSUB 500
  214. 42690 GOSUB 42580
  215. 42700 PRINT "-------------------------------------------------------------------------------"
  216. 42720 PRINT "FILE NUMBER : ";A
  217. 42740 PRINT "FILE NAME   : "; F$(A)
  218. 42760 PRINT "NUMBER OF FIELDS : ";NREC(A)
  219. 42780 PRINT "RECORD LENGTH    : ";L(A)
  220. 42800 FOR N = 1 TO NREC(A)
  221. 42820 PRINT  N ;TAB(5);FLDN$(A,N);
  222. 42840 ON FTY(A,N) GOTO 42860,42900,42980,43020,43060
  223. 42860 PRINT TAB(30) "  STRING WITH MAXIMUM LENGTH ";FL(A,N)
  224. 42880 GOTO 43080
  225. 42900 PRINT TAB(30) "  INTEGER ";
  226. 42920 IF KY(A,N) = 2 THEN  PRINT "--- KEY FOR LIST # ";KEYLIST(A,N)
  227. 42940 IF KY(A,N) <> 2 THEN  PRINT ""
  228. 42960 GOTO 43080
  229. 42980 PRINT TAB(30) "  SINGLE PRECISION "
  230. 43000 GOTO 43080
  231. 43020 PRINT TAB(30) "  DOUBLE PRECISION "
  232. 43040 GOTO 43080
  233. 43060 PRINT TAB(30) "  DOLLARS AND CENTS "
  234. 43080 REM ***
  235. 43100 NEXT N
  236. 43120 PRINT "-------------------------------------------------------------------------------"
  237. 43140 PRINT "***************  PRESS ANY KEY TO CONTINUE  ******************"
  238. 43160 PRINT ""
  239. 43180 IF INKEY$ = "" GOTO 43180
  240. 43200 RETURN
  241. 43220 REM ****** STORE FILES OM FILE FILE  ******
  242. 43240 OPEN "O",#1,"FFILE"
  243. 43260 WRITE #1,MAXF
  244. 43280 FOR T = 1 TO MAXF
  245. 43300 WRITE #1,T,F$(T),NREC(T),L(T)
  246. 43320 FOR N = 1 TO NREC(T)
  247. 43340 WRITE #1,FLDN$(T,N),FTY(T,N),FL(T,N)
  248. 43360 IF FTY(T,N) = 2 THEN WRITE #1,KY(T,N),KEYLIST(T,N)
  249. 43380 NEXT N
  250. 43400 NEXT T
  251. 43420 CLOSE #1
  252. 43425 GOSUB 26000
  253. 43430 SCRN(A) = 0
  254. 43432 GOSUB 25000
  255. 43434 GOSUB 27000
  256. 43436 MFLG(A) = 0
  257. 43438 GOSUB 27070
  258. 43439 GOSUB 53000
  259. 43440 RETURN
  260. 43700 LPRINT "-------------------------------------------------------------------------------"
  261. 43720 LPRINT "FILE NUMBER : ";A
  262. 43740 LPRINT "FILE NAME   : "; F$(A)
  263. 43760 LPRINT "NUMBER OF FIELDS : ";NREC(A)
  264. 43780 LPRINT "RECORD LENGTH    : ";L(A)
  265. 43800 FOR N = 1 TO NREC(A)
  266. 43820 LPRINT  N ;TAB(5);FLDN$(A,N);
  267. 43840 ON FTY(A,N) GOTO 43860,43900,43980,44020,44060
  268. 43860 LPRINT TAB(30) "  STRING WITH MAXIMUM LENGTH ";FL(A,N)
  269. 43880 GOTO 44080
  270. 43900 LPRINT TAB(30) "  INTEGER ";
  271. 43920 IF KY(A,N) = 2 THEN LPRINT "--- KEY FOR LIST # ";KEYLIST(A,N)
  272. 43940 IF KY(A,N) <> 2 THEN LPRINT ""
  273. 43960 GOTO 44080
  274. 43980 LPRINT TAB(30) "  SINGLE PRECISION "
  275. 44000 GOTO 44080
  276. 44020 LPRINT TAB(30) "  DOUBLE PRECISION "
  277. 44040 GOTO 44080 
  278. 44060 LPRINT TAB(30) "  DOLLAR AND CENTS AMOUNT "
  279. 44080 REM ***
  280. 44100 NEXT N
  281. 44120 PRINT ""
  282. 44140 RETURN
  283. 44160 END
  284. 44180 REM ************  CHECK FOR SKIPED FILES  ***************
  285. 44200 IF A > MAXF+1 GOTO 44280
  286. 44220 IF A > MAXF THEN MAXF = A
  287. 44240 GOTO 41360
  288. 44260 PRINT ""
  289. 44280 PRINT ""
  290. 44300 PRINT "+++++++++++++++  MISTAKE  ++++++++++++++++
  291. 44320 PRINT "     YOU MAY NOT SKIP FILE NUMBERS"
  292. 44340 PRINT "THE HIGEST NUMBER FILE IS CURRENTLY ";MAXF
  293. 44360 PRINT "YOU MAY NUMBER YOUR FILE FROM 1 TO ";MAXF+1
  294. 44380 PRINT ""
  295. 44400 GOTO 41180
  296. 44420 REM  ****** OPEN INITAL IPUT DATA FILE  ******
  297. 44440 GOSUB 500
  298. 44460 PRINT "********  PUTING DATA ON INPUT DATA FILE  ********"
  299. 44480 PRINT A
  300. 44500 T$ = STR$(A)
  301. 44520 T$ = MID$(T$,2)
  302. 44540 N$ = "IPUTD" + T$
  303. 44560 PRINT N$
  304. 44580 OPEN "O",#2,N$
  305. 44600 WRITE #2,NREC(A)
  306. 44620 FOR T = 1 TO NREC(A)
  307. 44640 WRITE #2,1," "
  308. 44660 NEXT T
  309. 44680 CLOSE #2
  310. 44700 RETURN
  311. 44720 REM ********  KEYLIST PROGRAM  ***********
  312. 44740 GOSUB 500
  313. 44760 PRINT "FILE :";F$(A);" FIELD : ";N;"- ";FLDN$(A,N)
  314. 44780 PRINT ""
  315. 44800 PRINT "************  IS THIS FIELD A KEY TO A LIST  ***********"
  316. 44820 PRINT ""
  317. 44840 PRINT "          1 - NOT A KEY "
  318. 44860 PRINT "          2 - IS A KEY "
  319. 44880 PRINT ""
  320. 44900 PRINT "*********  ENTER THE NUMBER THEN PRESS RETURN  **********"
  321. 44910 GOSUB 60000
  322. 44912 IF DT# <1 OR DT# >2 GOTO 44910
  323. 44920 KY(A,N) = DT#
  324. 44940 IF KY(A,N) = 1 THEN RETURN
  325. 44960 PRINT "*********  WHAT KEY LIST DOES THIS FIELD ACCESS  ********"
  326. 44970 PRINT "**********  ENTER THE NUMBER THEN PRESS RETURN  *********"
  327. 44980 GOSUB 60000
  328. 44982 IF DT# <1 OR DT# >10 GOTO 44980
  329. 44990 KEYLIST(A,N) = DT#
  330. 45000 RETURN
  331. 45020 REM  ************  CHANGE  **********
  332. 45040 GOSUB 42680
  333. 45080 PRINT "**********  WHAT FIELD DO YOU WANT TO CHANGE  ************"
  334. 45120 PRINT "***************  ENTER 0 FOR NO CHANGES  *****************"
  335. 45140 GOSUB 60000
  336. 45142 IF DT# <0 OR DT# >NREC(A) GOTO 45140
  337. 45150 N = DT#
  338. 45160 IF N = 0 THEN RETURN
  339. 45180 GOSUB 41620
  340. 45200 GOTO 45020
  341. 50000 REM **********  INTRO
  342. 50010 GOSUB 500
  343. 50100 PRINT "     F I L E    D E S C R I P T I O N    P R O G R A M    2.0   "
  344. 50105 PRINT ""
  345. 50110 PRINT "         Copyright 1984 by Potomac Pacific Engineering Inc."
  346. 50120 PRINT ""
  347. 50130 PRINT "This program is licensed FREE to all users with some restrictions"
  348. 50165 PRINT "        See the manual for more information on the license."
  349. 50167 PRINT ""
  350. 50920 GOSUB 23780
  351. 50950 PRINT "******************  PRESS ANY KEY TO CONTINUE  *****************";
  352. 50960 IF INKEY$ = "" GOTO 50960
  353. 50970 RETURN
  354. 51000 REM ***** EXIT TO SYSTEM
  355. 51100 GOSUB 500
  356. 51110 CLOSE
  357. 51120 PRINT " -BYE, Have a nice day"
  358. 51130 END
  359. 52000 REM ***** INTRO 1
  360. 52010 GOSUB 500
  361. 52100 PRINT "           Put the DATA DISK in the default disk drive  "
  362. 52110 PRINT ""
  363. 52120 PRINT "          *****  THEN PRESS ANY KEY TO CONTINUE  *****"
  364. 52130 PRINT ""
  365. 52140 PRINT "      The  CUSTOM  programs only use the PROGRAM DATA DISK"
  366. 52150 PRINT "Keep it in the default disk drive at all times during this program."
  367. 52200 IF INKEY$ = "" GOTO 52200
  368. 52210 RETURN
  369. 53000 REM **********  READ IDEX SUBROUTINE
  370. 53010 OPEN "I",#1,"REALTIME"
  371. 53020 FOR T = 1 TO MAXF
  372. 53030 INPUT #1,REALFLG(T)
  373. 53040 NEXT T
  374. 53050 CLOSE #1
  375. 53060 REALFLG(A) = 0
  376. 53070 REM **********  WRITE IDEX SUBROUTINE
  377. 53080 OPEN "O",#1,"REALTIME"
  378. 53090 FOR T = 1 TO 30
  379. 53100 WRITE #1,REALFLG(T)
  380. 53110 NEXT T
  381. 53120 CLOSE #1
  382. 53130 RETURN
  383. 60000 REM *******  INTEGER LESS THEN 100 CHECK  ********
  384. 60010 MAX = 2
  385. 60020 ACT$ = "1234567890=<>^"
  386. 60030 IF NE = 0 THEN ACT$ = "1234567890"
  387. 60040 PRINT ">__<";
  388. 60050 GOTO 60240
  389. 60060 REM *******  INTEGER *******                        
  390. 60070 MAX = 8
  391. 60080 ACT$ = "1234567890-+,=<>^"
  392. 60090 IF NE = 0 THEN ACT$ = "1234567890-+,"
  393. 60100 PRINT ">________<";
  394. 60110 GOTO 60240
  395. 60120 REM *******  SINGLE PRECISION  *******                        
  396. 60130 MAX = 10
  397. 60140 ACT$ = "1234567890-+,.%$=<>^"
  398. 60150 IF NE = 0 THEN ACT$ = "1234567890+-,.%$"
  399. 60160 PRINT ">__________<";
  400. 60170 GOTO 60240
  401. 60180 REM *******  DOUBLE PRECISION  *******                        
  402. 60190 MAX = 20
  403. 60200 ACT$ = "1234567890-+,.%$=<>^"
  404. 60210 IF NE = 0 THEN ACT$ = "1234567890+-,.%$"
  405. 60220 PRINT ">____________________<";
  406. 60230 GOTO 60240
  407. 60240 REM ********** NUMBER CHECK **********
  408. 60250 A$ = ""
  409. 60260 K$(20) = " "
  410. 60270 KTMAX = 0
  411. 60280 FOR T9 = 1 TO MAX
  412. 60290 K$(T9) = " "
  413. 60300 NEXT T9
  414. 60310 DIG$ = "1234567890."
  415. 60320 DOTFLG = 0
  416. 60330 T2 = MAX + 1
  417. 60340 FOR T6 = 1 TO T2
  418. 60350 PRINT CHR$(CH);
  419. 60360 NEXT T6
  420. 60370 IF INKEY$ = "" GOTO 60380 ELSE GOTO 60370
  421. 60380 KT = 0
  422. 60390 REM ***********  CHECK ALFANUMERIC INPUT FOR LENGTH  ***********
  423. 60400 KT = KT + 1
  424. 60410 REM     
  425. 60420 W$ = INKEY$
  426. 60430 IF W$ = "" GOTO 60420
  427. 60440 C = ASC(W$)
  428. 60450 IF C = 0 THEN GOSUB 61900
  429. 60460 IF C = 13 GOTO 60580
  430. 60470 IF C = 17 OR C = 8 GOTO 61150
  431. 60480 IF C = 19 GOTO 60670
  432. 60490 IF C = 4 GOTO 60720
  433. 60500 IF C = 6 GOTO 60780
  434. 60510 IF C = 1 GOTO 60960
  435. 60520 IF KT > MAX GOTO 60410
  436. 60530 IF INSTR(ACT$,W$) = 0 GOTO 61230
  437. 60540 K$(KT) = W$
  438. 60550 PRINT K$(KT);
  439. 60560 IF KT > KTMAX THEN KTMAX = KT
  440. 60570 GOTO 60400
  441. 60580 REM **********  RETURN  **********
  442. 60590 FOR T9 = 1 TO KTMAX
  443. 60600 A$ = A$ + K$(T9)
  444. 60610 NEXT T9
  445. 60620 IF KTMAX = 0 THEN PRINT "1"
  446. 60630 IF KTMAX = 0 THEN DT# = 1
  447. 60640 IF KTMAX = 0 THEN RETURN
  448. 60650 PRINT ""
  449. 60660 GOTO 61260
  450. 60670 REM ********* MOVE CURSE BACK ********
  451. 60680 IF KT = 1 GOTO 60410
  452. 60690 KT = KT - 1
  453. 60700 PRINT CHR$(CH);
  454. 60710 GOTO 60410
  455. 60720 REM ********* MOVE CURSER FORWARD *********
  456. 60730 IF KT >= MAX GOTO 60410
  457. 60740 IF KT > (KTMAX + 1) GOTO 60410
  458. 60750 PRINT K$(KT);
  459. 60760 KT = KT + 1
  460. 60770 GOTO 60410
  461. 60780 REM ********** INSERT ***********
  462. 60790 IF KT > KTMAX GOTO 60410
  463. 60800 X9 = MAX
  464. 60810 WHILE X9 > KT
  465. 60820 X9 = X9 - 1
  466. 60830 K$(X9 + 1) = K$(X9)
  467. 60840 WEND 
  468. 60850 K$(KT) = " "
  469. 60860 KTMAX = KTMAX + 1
  470. 60870 IF KTMAX > MAX THEN KTMAX = MAX
  471. 60880 FOR T9 = KT TO KTMAX
  472. 60890 PRINT K$(T9);
  473. 60900 NEXT T9
  474. 60910 T6 = (KTMAX - KT) + 1
  475. 60920 FOR T7 = 1 TO T6
  476. 60930 PRINT CHR$(CH);
  477. 60940 NEXT T7
  478. 60950 GOTO 60410
  479. 60960 REM ********** DELETE ***********
  480. 60970 IF KT > KTMAX GOTO 60410
  481. 60980 IF KTMAX = 1 GOTO 60410
  482. 60990 K$(MAX + 1) = ""
  483. 61000 X9 = KT 
  484. 61010 WHILE X9 <= MAX
  485. 61020 K$(X9) = K$(X9 + 1)
  486. 61030 X9 = X9 + 1
  487. 61040 WEND 
  488. 61050 KTMAX = KTMAX - 1
  489. 61060 FOR T9 = KT TO KTMAX
  490. 61070 PRINT K$(T9);
  491. 61080 NEXT T9
  492. 61090 PRINT "_";
  493. 61100 T7 = (KTMAX - KT) + 2
  494. 61110 FOR T8 = 1 TO T7
  495. 61120 PRINT CHR$(CH);
  496. 61130 NEXT T8
  497. 61140 GOTO 60410
  498. 61150 REM ********* BACKSPACE ********
  499. 61160 IF KT = 1 GOTO 60410
  500. 61170 KT = KT - 1
  501. 61180 PRINT CHR$(CH);
  502. 61190 K$(KT) = " " 
  503. 61200 PRINT "_";
  504. 61210 PRINT CHR$(CH);
  505. 61220 GOTO 60410
  506. 61230 REM *******  INPUT NOT ACCEPTABLE  ********
  507. 61240 PRINT CHR$(7);
  508. 61250 GOTO 60420
  509. 61260 REM ********* CLEAR STRINGS ********
  510. 61270 MAX = LEN(A$)
  511. 61280 D2$ = ""
  512. 61290 D1$ = ""
  513. 61300 DFLG = 0
  514. 61310 FOR Q93 = 1 TO MAX
  515. 61320 R$ = MID$(A$,Q93,1)
  516. 61330 IF INSTR(DIG$,R$) = 0 GOTO 61400
  517. 61340 IF R$ = "." OR DFLG = 1 GOTO 61380
  518. 61350 IF DFLG = 1 GOTO 61380
  519. 61360 D2$ = D2$ + R$
  520. 61370 GOTO 61400
  521. 61380 D1$ = D1$ + R$
  522. 61390 DFLG = 1
  523. 61400 NEXT Q93
  524. 61410 DA# = VAL(D2$)
  525. 61420 D1# = VAL(D1$)
  526. 61430 DT# = DA# + D1#
  527. 61440 IF K$(1) = "-" THEN DT# =  -DT#   
  528. 61450 RETURN
  529. 61900 REM ****** CHECK FOR ASC0
  530. 61910 S4$ = INKEY$
  531. 61920 C2 =  ASC(S4$)
  532. 61930 IF C2 = 83 THEN C = 1
  533. 61940 IF C2 = 82 THEN C = 6
  534. 61950 IF C2 = 75 THEN C = 19
  535. 61960 IF C2 = 77 THEN C = 4 
  536. 61970 RETURN
  537. 62000 REM **********  ALPHANUMERIC CHECK  **************
  538. 62010 MAX = FL(A,Q)
  539. 62020 GOTO 62040
  540. 62030 REM ********  MAX SET IN PROGRAM  ********
  541. 62040 A$ = ""
  542. 62050 PRINT ">"; 
  543. 62060 FOR N9 = 1 TO MAX
  544. 62070 K$(N9) = ""
  545. 62080 PRINT "_";
  546. 62090 NEXT N9
  547. 62100 PRINT "<";
  548. 62110 T2 = MAX + 1
  549. 62120 FOR T4 = 1 TO T2
  550. 62130 PRINT CHR$(CH);
  551. 62140 NEXT T4
  552. 62150 KT = 0
  553. 62160 KTMAX = 1
  554. 62170 REM ***********  CHECK ALFANUMERIC INPUT FOR LENGTH  ***********
  555. 62180 KT = KT + 1
  556. 62190 PRINT TAB(KT+1)"";
  557. 62200 K$ = INKEY$
  558. 62210 IF K$ = "" GOTO 62200
  559. 62220 C = ASC(K$)
  560. 62230 IF C = 0 THEN GOSUB 61900
  561. 62240 IF C = 13 GOTO 62350
  562. 62250 IF C = 17 OR C = 8 GOTO 62920
  563. 62260 IF C = 19 GOTO 62450
  564. 62270 IF C = 4  GOTO 62500
  565. 62280 IF C = 6 GOTO 62560
  566. 62290 IF C = 1 GOTO 62730
  567. 62300 IF KT > MAX GOTO 62190
  568. 62310 K$(KT) = K$
  569. 62320 PRINT K$(KT);
  570. 62330 IF KT > KTMAX THEN KTMAX = KT
  571. 62340 GOTO 62180
  572. 62350 REM **********  RETURN  **********
  573. 62360 FOR T9 = 1 TO MAX
  574. 62370 A$ = A$ + K$(T9)
  575. 62420 NEXT T9
  576. 62430 PRINT "" 
  577. 62440 RETURN  
  578. 62450 REM ********* MOVE CURSE BACK ********
  579. 62460 IF KT = 1 GOTO 62190
  580. 62470 KT = KT - 1
  581. 62480 PRINT CHR$(CH);
  582. 62490 GOTO 62190
  583. 62500 REM ********* MOVE CURSER FORWARD *********
  584. 62510 IF KT >= MAX GOTO 62190
  585. 62520 IF KT >  KTMAX  GOTO 62190
  586. 62530 PRINT K$(KT);
  587. 62540 KT = KT + 1
  588. 62550 GOTO 62190
  589. 62560 REM ********** INSERT ***********
  590. 62570 X9 = MAX
  591. 62580 WHILE X9 > KT
  592. 62590 X9 = X9 - 1
  593. 62600 K$(X9 + 1) = K$(X9)
  594. 62610 WEND 
  595. 62620 K$(KT) = " "
  596. 62630 KTMAX = KTMAX + 1
  597. 62640 IF KTMAX > MAX THEN KTMAX = MAX
  598. 62650 FOR T9 = KT TO KTMAX
  599. 62660 PRINT K$(T9);
  600. 62670 NEXT T9
  601. 62680 T6 = (KTMAX - KT) +1
  602. 62690 FOR T7 = 1 TO T6
  603. 62700 PRINT CHR$(CH);
  604. 62710 NEXT T7
  605. 62720 GOTO 62190
  606. 62730 REM ********** DELETE ***********
  607. 62740 IF KT > KTMAX GOTO 62200
  608. 62750 IF KTMAX = 1 GOTO 62190
  609. 62760 K$(MAX + 1) = ""
  610. 62770 X9 = KT 
  611. 62780 WHILE X9 <= KTMAX
  612. 62790 K$(X9) = K$(X9 + 1)
  613. 62800 X9 = X9 + 1
  614. 62810 WEND 
  615. 62820 KTMAX = KTMAX - 1
  616. 62830 FOR T9 = KT TO KTMAX
  617. 62840 PRINT K$(T9);
  618. 62850 NEXT T9
  619. 62860 PRINT "_";
  620. 62870 T7 = (KTMAX - KT) + 2
  621. 62880 FOR T6 = 1 TO T7
  622. 62890 PRINT CHR$(CH);
  623. 62900 NEXT T6
  624. 62910 GOTO 62190
  625. 62920 REM ********* BACKSPACE ********
  626. 62930 IF KT = 1 GOTO 62190
  627. 62940 K$(KT) = " "
  628. 62950 KT = KT - 1
  629. 62960 K$(KT) = " "
  630. 62970 PRINT CHR$(CH);
  631. 62980 PRINT "_";
  632. 62990 PRINT CHR$(CH);
  633. 63000 GOTO 62190
  634.  " "
  635. 62950 KT = KT - 1
  636. 62960 K$(KT) = " "