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

  1. 4 DEFINT A-W,Y-Z
  2. 5 DIM F$(17),FLDN$(17,30),FTY(17,30),FL(17,30),IOPT(30)
  3. 13 DIM L(17),NREC(17)
  4. 16 DIM KY(17,30),KEYLIST(17,30)
  5. 18 DIM FORM$(10)
  6. 19 DIM EN(80),CE(80,10),TE(80,10),L$(80,10),EFN(80,10)
  7. 35 DIM K$(80)
  8. 70 CH = 29
  9. 74 PRINT FRE(0)
  10. 80 GOSUB 52000
  11. 100 GOSUB 50000
  12. 200 GOTO 1000
  13. 500 REM ******* CLS
  14. 510 CLS 
  15. 520 RETURN
  16. 1000 GOSUB 5920
  17. 1220 GOSUB 500
  18. 1240 PRINT "*******  FORM DESCRIPTIONS INITIAL MENU  *********"
  19. 1245 PRINT ""
  20. 1250 PRINT "        0 - EXIT "
  21. 1255 PRINT ""
  22. 1260 PRINT "        1 - ENTER A NEW FORM DESCRIPTION"
  23. 1265 PRINT ""
  24. 1280 PRINT "        2 - READ A READ A FORM DESCRIPTION"
  25. 1300 PRINT "               WITH  -  CORECTIONS"
  26. 1320 PRINT "                     -  PRINT ON PAPER "
  27. 1325 PRINT ""
  28. 1340 PRINT "******  ENTER THE NUMBER THEN PRESS RETURN  ******"
  29. 1360 PRINT ""
  30. 1380 GOSUB 60000
  31. 1382 IF DT# <0 OR DT#> 2  GOTO 1380
  32. 1390 T = DT#
  33. 1395 IF T = 0 GOTO 51000
  34. 1400 ON T GOTO 1420,1500
  35. 1420 REM  **********  REM NEW CUSTOM INPUT  **********
  36. 1440 GOSUB 1900
  37. 1460 GOSUB 3560
  38. 1480 GOTO 1220
  39. 1500 REM **********  READ A OUTPUT DESCRIPTION  *********
  40. 1520 PRINT "********  WHAT FORM DO YOU WANT TO SEE  ********"
  41. 1540 GOSUB 6060
  42. 1560 PRINT "********  WHAT FORM DO YOU WANT TO SEE  ********"
  43. 1565 GOSUB 60000
  44. 1567 IF DT# <1 OR DT# >MAXFORM GOTO 1565
  45. 1570 T = DT#
  46. 1580 N$ = FORM$(T)
  47. 1600 GOSUB 3960
  48. 1620 GOSUB 4340
  49. 1640 PRINT " PRESS ANY KEY TO CONTINUE "
  50. 1660 IF INKEY$ = "" GOTO 1660
  51. 1680 PRINT "******************  OPTIONS :  ****************"
  52. 1700 PRINT "        0 - RETURN TO INITIAL MENU"
  53. 1720 PRINT "        1 - MAKE CORRECTIONS"
  54. 1740 PRINT "        2 - PRINT ON PAPER "
  55. 1760 PRINT "*****  ENTER THE NUMBER THEN PRESS RETURN  *****"
  56. 1780 GOSUB 60000
  57. 1782 IF DT# <0 OR DT#> 2 GOTO 1780
  58. 1790 T1 = DT#
  59. 1800 IF T1 = 0 GOTO 1220
  60. 1820 IF T1 = 1 GOTO 5300
  61. 1840 GOSUB 4820
  62. 1860 GOTO 1220
  63. 1880 GOTO 1220
  64. 1900 GOSUB 500
  65. 1920 GOSUB 6160
  66. 1940 PRINT "********************** CUSTOM OUTPUT ROUTINE  *******************"
  67. 1960 PRINT ""
  68. 1980 PRINT "*********  HOW MANY LINES DO YOU WANT ON YOUR OUTPUT FORM  ******"
  69. 2000 GOSUB 60050
  70. 2002 IF DT# <1 OR DT#> 100  GOTO 2000
  71. 2010 LN = DT#
  72. 2020 GOSUB 500
  73. 2040 PRINT "YOU WANT ";LN;" LINES ON YOUR OUTPUT FORM "
  74. 2060 PRINT "***************  IS THAT CORRECT  **************"
  75. 2080 PRINT "           1 - CORRECT "
  76. 2100 PRINT "           2 - NOT CORRECT"
  77. 2110 PRINT "*****  ENTER THE NUMBER THEN PRESS RETURN  *****"
  78. 2120 GOSUB 60000
  79. 2122 IF DT# <1 OR DT#> 2  GOTO 2120
  80. 2130 T = DT#
  81. 2140 IF T  = 2 GOTO 1900
  82. 2160 GOSUB 500
  83. 2180 PRINT "**********  WHICH FILE DO YOU WANT TO USE IN THIS FROM   **********"
  84. 2200 PRINT ""
  85. 2220 FOR T = 1 TO MAXF
  86. 2240 PRINT T;"-";F$(T)
  87. 2260 NEXT T
  88. 2280 PRINT ""
  89. 2300 PRINT "*************  ENTER THE NUMBER THEN PRESS RETURN  ***************"
  90. 2305 GOSUB 60000
  91. 2307 IF DT# <1 OR DT#> MAXF GOTO 2305
  92. 2310 MF = DT#
  93. 2320 GOSUB 500
  94. 2340 N$ = FORM$(TH)
  95. 2360 REM ******  BEGIN LINE LOOP  ******
  96. 2380 FOR L = 1 TO LN 
  97. 2400 GOSUB 2460
  98. 2420 NEXT L          
  99. 2440 RETURN
  100. 2460 GOSUB 500
  101. 2480 PRINT "**********  LINE NUMBER";L;"**********"
  102. 2500 PRINT ""
  103. 2520 PRINT "HOW MANY ENTRIES ON THIS LINE ?"
  104. 2540 GOSUB 60000
  105. 2542 IF DT# <1 OR DT#> 10  GOTO 2540
  106. 2550 EN(L) = DT#
  107. 2660 REM *******  BEGIN ENTRY LOOP  ********
  108. 2680 FOR E = 1 TO EN(L)
  109. 2700 GOSUB 2760          
  110. 2720 NEXT E
  111. 2740 RETURN
  112. 2760 GOSUB 500
  113. 2780 PRINT "***********  LINE ";L;" ENTRY ";E;"  ***********"
  114. 2800 PRINT ""
  115. 2820 PRINT "WHAT COLUMN TO YOU WANT THIS ENTRY TO START AT ?
  116. 2840 GOSUB 60050
  117. 2842 IF DT# <1 OR DT#> 250  GOTO 2840
  118. 2850 CE(L,E) = DT#
  119. 2860 PRINT "**********  WHAT TYPE IS THE ENTRY  ************"
  120. 2880 PRINT "    1 - STRING CONSTANT"
  121. 2900 PRINT "    2 - GET FROM MAIN FILE"
  122. 2920 PRINT "    3 - STRING CORESPONDING TO A KEY FROM A FILE "
  123. 2940 PRINT "    4 - BLANK"
  124. 2950 PRINT "*****  ENTER THE NUMBER THEN PRESS RETURN  *****"
  125. 2960 GOSUB 60000
  126. 2962 IF DT# <1 OR DT#> 4 GOTO 2960
  127. 2965 IF DT# = 4 THEN DT# = 5
  128. 2970 TE(L,E) = DT#
  129. 2980 ON TE(L,E) GOTO 3000,3080,3300,3520,3520
  130. 3000 REM ***** STRING CONSTANT *****
  131. 3020 PRINT "******  ENTER THE CONSTANT THEN PRESS RETURN  ******"
  132. 3030 MAX = 70
  133. 3040 GOSUB 62030
  134. 3050 L$(L,E) = A$
  135. 3060 GOTO 3520
  136. 3080 REM ***** GET FROM MAIN FILE *****
  137. 3100 GOSUB 500
  138. 3120 PRINT "****************  GET FROM MAIN FILE  ****************"
  139. 3140 PRINT "  FILE NAME ";F$(MF)
  140. 3160 PRINT "  RECORD NUMBER AUTOMATICALLY INCREMENTS FOR EACH FORM "
  141. 3180 PRINT "***  WHAT FIELD DO YOU WANT TO GET THE ENTRY FROM  ***"
  142. 3200 FOR T = 1 TO NREC(MF)
  143. 3220 PRINT T;"-";FLDN$(MF,T)
  144. 3240 NEXT T
  145. 3260 PRINT "*****  ENTER THE FIELD NUMBER THEN PRESS RETURN  *****"
  146. 3265 GOSUB 60000
  147. 3267 IF DT# <1 OR DT#> NREC(MF) GOTO 3265
  148. 3270 EFN(L,E) = DT#
  149. 3280 GOTO 3520
  150. 3300 REM ********  PRINT KEY CORRESPONDING TO A KEY
  151. 3320 PRINT "******  PRINT KEY CORESPONDING TO FILE ENTRY  ********"
  152. 3340 PRINT "  FILE NAME ";F$(MF)
  153. 3360 PRINT "  RECORD NUMBER AUTOMATICALLY INCREMENTS FOR EACH FORM "
  154. 3380 PRINT "****  WHAT FIELD DO YOU WANT TO BASE THE KEY ON  *****"
  155. 3400 FOR T = 1 TO NREC(MF)
  156. 3420 PRINT T;"-";FLDN$(MF,T)
  157. 3440 NEXT T
  158. 3460 PRINT "*****  ENTER THE FIELD NUMBER THEN PRESS RETURN  *****"
  159. 3465 GOSUB 60000
  160. 3467 IF DT# <1 OR DT#> NREC(MF) GOTO 3465
  161. 3468 IF KY(MF,DT#) <> 2 GOTO 3465
  162. 3470 EFN(L,E) = DT#
  163. 3480 GOTO 3520
  164. 3520 RETURN   
  165. 3540 RETURN
  166. 3560 REM ********** WRITE DATA ON FILE ***********
  167. 3580 PRINT " FILE NAME ";N$
  168. 3600 OPEN "O",#1,N$
  169. 3620 WRITE #1,LN,MF,SFO
  170. 3640 IF SFO = 1 THEN WRITE #1,TMF,TSF,SF
  171. 3660 FOR T1 = 1 TO LN
  172. 3680  WRITE #1,EN(T1)
  173. 3700  FOR T2 = 1 TO EN(T1)
  174. 3720   WRITE #1,CE(T1,T2),TE(T1,T2)
  175. 3740   ON TE(T1,T2) GOTO 3760,3800,3840,3880,3880
  176. 3760    WRITE #1,L$(T1,T2)
  177. 3780    GOTO 3880
  178. 3800    WRITE #1,EFN(T1,T2)
  179. 3820    GOTO 3880
  180. 3840    WRITE #1,EFN(T1,T2)
  181. 3860    GOTO 3880
  182. 3880  NEXT T2
  183. 3900 NEXT T1
  184. 3920 CLOSE
  185. 3940 RETURN
  186. 3960 REM ********** READ DATA ON FILE ***********
  187. 3980 OPEN "I",#1,N$
  188. 4000 INPUT #1,LN,MF,SFO
  189. 4020 IF SFO = 1 THEN INPUT #1,TMF,TSF,SF
  190. 4040 FOR T1 = 1 TO LN
  191. 4060  INPUT #1,EN(T1)
  192. 4080  FOR T2 = 1 TO EN(T1)
  193. 4100   INPUT #1,CE(T1,T2),TE(T1,T2)
  194. 4120   ON TE(T1,T2) GOTO 4140,4180,4220,4260,4260
  195. 4140    INPUT #1,L$(T1,T2)
  196. 4160    GOTO 4260
  197. 4180    INPUT #1,EFN(T1,T2)
  198. 4200    GOTO 4260
  199. 4220    INPUT #1,EFN(T1,T2)
  200. 4240    GOTO 4260
  201. 4260  NEXT T2
  202. 4280 NEXT T1
  203. 4300 CLOSE
  204. 4320 RETURN
  205. 4340 REM ********** PRINT DATA ON PAPER  *********
  206. 4360 PRINT "CUSTOM OUTPUT FILE NAME ";N$
  207. 4380 PRINT "NUMBER OF LINES ";LN
  208. 4400 PRINT "MAIN FILE      ";F$(MF)
  209. 4420 IF SFO = 2 THEN GOTO 4440 
  210. 4440 FOR T1 = 1 TO LN
  211. 4460  PRINT "*****  LINE NUMBER ";T1;"NUMBER OF ENTRIES";EN(T1)
  212. 4480  FOR T2 = 1 TO EN(T1)
  213. 4500   PRINT "ENTRY # ";T2;"COLUMN NUMBER ";CE(T1,T2)            
  214. 4520   ON TE(T1,T2) GOTO 4540,4580,4640,4700,4740
  215. 4540    PRINT "  STRING CONSTANT : ";L$(T1,T2)
  216. 4560    GOTO 4760
  217. 4580    T3 = EFN(T1,T2)
  218. 4600    PRINT "  GET FROM MAIN FILE - FIELD = ";FLDN$(MF,T3)         
  219. 4620    GOTO 4760
  220. 4640    T3 = EFN(T1,T2)
  221. 4660    PRINT "  PRINT VALUE CORESPONDING TO A KEY  ";FLDN$(MF,T3)      
  222. 4680    GOTO 4760
  223. 4700 PRINT "  GET FROM SECONDARY FILE - FORMAT SAME AS LAST LINE"
  224. 4720 GOTO 4760
  225. 4740 PRINT "  LINE BLANK "
  226. 4760  NEXT T2
  227. 4780 NEXT T1
  228. 4800 RETURN
  229. 4820 REM ********** PRINT DATA ON PAPER  *********
  230. 4840 LPRINT "CUSTOM OUTPUT FILE NAME ";N$
  231. 4860 LPRINT "NUMBER OF LINES ";LN
  232. 4880 LPRINT "MAIN FILE   ";F$(MF)
  233. 4920 FOR T1 = 1 TO LN
  234. 4940  LPRINT "LINE NUMBER ";T1;"NUMBER OF ENTRIES";EN(T1)
  235. 4960  FOR T2 = 1 TO EN(T1)
  236. 4980   LPRINT "ENTRY # ";T2;"COLUMN NUMBER ";CE(T1,T2)            
  237. 5000   ON TE(T1,T2) GOTO 5020,5060,5120,5180,5220
  238. 5020    LPRINT "  STRING CONSTANT : ";L$(T1,T2)
  239. 5040    GOTO 5240
  240. 5060    T3 = EFN(T1,T2)
  241. 5080    LPRINT "  GET FROM MAIN FILE - FIELD = ";FLDN$(MF,T3)         
  242. 5100    GOTO 5240
  243. 5120    T3 = EFN(T1,T2)
  244. 5140    LPRINT "  VALUE CORESPONDING TO KEY = ";FLDN$(MF,T3)      
  245. 5160    GOTO 5240
  246. 5180 LPRINT "  GET FROM SECONDARY FILE - FORMAT SAME AS LAST LINE"
  247. 5200 GOTO 5240
  248. 5220 LPRINT "  LINE BLANK "
  249. 5240  NEXT T2
  250. 5260 NEXT T1
  251. 5280 RETURN
  252. 5300 REM **********  CORRECT RECORD ROUTINE  ***********
  253. 5320 GOSUB 500
  254. 5340 PRINT "******************  OPTIONS : ******************"
  255. 5360 PRINT "       1 - RETURN TO INITIAL MENU"
  256. 5380 PRINT "       2 - CHANGE A SINGLE ENTRY"
  257. 5400 PRINT "       3 - CHANGE AN ENTIRE LINE"
  258. 5420 PRINT "*****  ENTER THE NUMBER THEN PRESS RETURN  *****"
  259. 5440 GOSUB 60000
  260. 5442 IF DT# <1 OR DT#> 3 GOTO 5440
  261. 5450 TC = DT#
  262. 5460 IF TC = 1 THEN GOSUB 3560
  263. 5480 IF TC = 1 GOTO 1220
  264. 5500 IF TC = 2 GOTO 5600
  265. 5520 PRINT "WHAT LINE DO YOU WANT TO CHANGE ?"
  266. 5540 GOSUB 60000
  267. 5550 L = DT#
  268. 5560 GOSUB 2460
  269. 5580 GOTO 5300
  270. 5600 REM *******  CHANGE A SINGLE ENTRY  *******
  271. 5620 PRINT "WHAT LINE IS THE ENTRY ON THAT YOU WANT TO CHANGE ?"
  272. 5640 GOSUB 60050
  273. 5642 IF DT# <1 OR DT#> 100  GOTO 5640
  274. 5650 L = DT#
  275. 5660 PRINT "WHAT IS THE ENTRY NUMBER THAT YOU WANT TO CHANGE ? "
  276. 5680 GOSUB 60000
  277. 5682 IF DT# <1 OR DT#> 10  GOTO 5680
  278. 5690 E = DT#
  279. 5700 GOSUB 2760
  280. 5720 GOTO 5300
  281. 5740 REM  *******  LIST OF FORM FILE  ********
  282. 5760 OPEN "O",#1,"FORMLIST"
  283. 5780 WRITE #1,MAXFORM
  284. 5800 FOR T = 1 TO MAXFORM
  285. 5820 WRITE #1,FORM$(T)
  286. 5840 NEXT T
  287. 5860 CLOSE #1
  288. 5880 RETURN
  289. 5900 REM *********  INPUT LIST OF FORMS FROM DISK  *********
  290. 5920 OPEN "I",#1,"FORMLIST"
  291. 5940 INPUT #1,MAXFORM
  292. 5960 FOR T = 1 TO MAXFORM
  293. 5980 INPUT #1,FORM$(T)
  294. 6000 NEXT T
  295. 6020 CLOSE #1
  296. 6040 RETURN
  297. 6060 REM ******* PRINT FORM LIST *******
  298. 6080 FOR T = 1 TO MAXFORM
  299. 6100 PRINT T;"-";FORM$(T)
  300. 6120 NEXT T
  301. 6140 RETURN
  302. 6160 GOSUB 500
  303. 6180 PRINT "**************  WHAT FORM DO YOU WANT  ***************"
  304. 6200 GOSUB 6060
  305. 6220 PRINT ""
  306. 6240 PRINT "     YOU MAY REDEFINE ANY OF THE ABOVE FORMS "
  307. 6260 PRINT "                       OR"
  308. 6280 PRINT "           YOU MAY DEFINE A NEW FORM "
  309. 6300 PRINT ""
  310. 6320 PRINT "*********  ENTER A NUMBER FROM 1 TO ";MAXFORM + 1;"*********" 
  311. 6340 GOSUB 60000
  312. 6342 IF DT# <1 OR DT#> (MAXFORM + 1)  GOTO 6340
  313. 6350 T = DT#
  314. 6360 TH = T
  315. 6380 IF T > MAXFORM + 1 THEN GOTO 6160
  316. 6400 GOSUB 6500
  317. 6420 IF T = MAXFORM + 1 THEN MAXFORM = T
  318. 6440 GOSUB 500
  319. 6460 PRINT "FORM NAME : ";N$
  320. 6480 RETURN
  321. 6500 PRINT "*******  WHAT IS THE NAME OF YOUR FORM  *******"
  322. 6510 PRINT "First Character must be a letter."
  323. 6515 PRINT "No spaces between characters."
  324. 6520 PRINT ""
  325. 6540 PRINT "*****  ENTER THE NAME THEN PRESS RETURN  ******"
  326. 6550 MAX = 8
  327. 6560 GOSUB 62030
  328. 6562 GOSUB 8000
  329. 6564 IF TEST = 4 GOTO 6560
  330. 6570 FORM$(T) = A$
  331. 6580 N$ = FORM$(T)
  332. 6600 GOSUB 5740
  333. 6620 RETURN
  334. 8000 REM ***** FILE NAME ACCEPLABLE TEST ************
  335. 8010 TEST = 1
  336. 8100 FOR Q = 1 TO LEN(A$)
  337. 8110 K$(Q) = MID$(A$,Q,1)
  338. 8120 C = ASC(K$(Q))
  339. 8130 IF C < 48 OR C > 122 THEN TEST = 4
  340. 8140 IF Q = 1 AND ( C < 65 OR C > 122 ) THEN TEST = 4
  341. 8150 NEXT Q
  342. 8190 RETURN
  343. 23780 REM *************  READ SUBROUTINE  *************
  344. 23800 OPEN "I",#1,"FFILE"
  345. 23820 INPUT #1,MAXF
  346. 23840 FOR A = 1 TO MAXF
  347. 23860 INPUT #1,A,F$(A),NREC(A),L(A)
  348. 23880 FOR N = 1 TO NREC(A)
  349. 23900 INPUT #1,FLDN$(A,N),FTY(A,N),FL(A,N)
  350. 23920 IF FTY(A,N) = 2 THEN INPUT #1,KY(A,N),KEYLIST(A,N)
  351. 23940 NEXT N
  352. 23960 NEXT A
  353. 23980 CLOSE #1
  354. 24000 RETURN
  355. 50000 REM **********  INTRO
  356. 50010 GOSUB 500
  357. 50100 PRINT "      F O R M    D E S C R I P T I O N    P R O G R A M    3.0 "
  358. 50105 PRINT ""
  359. 50110 PRINT "        Copyright 1984 by Potomac Pacific Engineering Inc."
  360. 50120 PRINT ""
  361. 50130 PRINT "This program is licensed FREE to all users with some restrictions "
  362. 50165 PRINT "        See the manual for more information on the license."
  363. 50167 PRINT ""
  364. 50920 GOSUB 23780
  365. 50950 PRINT "******************  PRESS ANY KEY TO CONTINUE  *******************";
  366. 50960 IF INKEY$ = "" GOTO 50960
  367. 50970 RETURN
  368. 51000 REM ***** EXIT TO SYSTEM
  369. 51100 GOSUB 500
  370. 51110 CLOSE
  371. 51120 PRINT " -BYE, Have a nice day"
  372. 51130 END
  373. 52000 REM ***** INTRO 1
  374. 52010 GOSUB 500
  375. 52100 PRINT "           Put the DATA DISK in the default disk drive  "
  376. 52110 PRINT ""
  377. 52120 PRINT "          *****  THEN PRESS ANY KEY TO CONTINUE  *****"
  378. 52130 PRINT ""
  379. 52140 PRINT "      The  CUSTOM  programs only use the PROGRAM DATA DISK"
  380. 52150 PRINT "Keep it in the default disk drive at all times during this program."
  381. 52200 IF INKEY$ = "" GOTO 52200
  382. 52210 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. 60045 GOTO 60240
  389. 60050 REM
  390. 60060 REM *******  INTEGER *******                        
  391. 60070 MAX = 8
  392. 60080 ACT$ = "1234567890-+,=<>^"
  393. 60090 IF NE = 0 THEN ACT$ = "1234567890-+,"
  394. 60100 PRINT ">________<";
  395. 60110 GOTO 60240
  396. 60120 REM *******  SINGLE PRECISION  *******                        
  397. 60130 MAX = 10
  398. 60140 ACT$ = "1234567890-+,.%$=<>^"
  399. 60150 IF NE = 0 THEN ACT$ = "1234567890+-,.%$"
  400. 60160 PRINT ">__________<";
  401. 60170 GOTO 60240
  402. 60180 REM *******  DOUBLE PRECISION  *******                        
  403. 60190 MAX = 20
  404. 60200 ACT$ = "1234567890-+,.%$=<>^"
  405. 60210 IF NE = 0 THEN ACT$ = "1234567890+-,.%$"
  406. 60220 PRINT ">____________________<";
  407. 60230 GOTO 60240
  408. 60240 REM ********** NUMBER CHECK **********
  409. 60250 A$ = ""
  410. 60260 K$(20) = " "
  411. 60270 KTMAX = 0
  412. 60280 FOR T9 = 1 TO MAX
  413. 60290 K$(T9) = " "
  414. 60300 NEXT T9
  415. 60310 DIG$ = "1234567890."
  416. 60320 DOTFLG = 0
  417. 60330 T2 = MAX + 1
  418. 60340 FOR T6 = 1 TO T2
  419. 60350 PRINT CHR$(CH);
  420. 60360 NEXT T6
  421. 60370 IF INKEY$ = "" GOTO 60380 ELSE GOTO 60370
  422. 60380 KT = 0
  423. 60390 REM ***********  CHECK ALFANUMERIC INPUT FOR LENGTH  ***********
  424. 60400 KT = KT + 1
  425. 60410 REM     
  426. 60420 W$ = INKEY$
  427. 60430 IF W$ = "" GOTO 60420
  428. 60440 C = ASC(W$)
  429. 60450 IF C = 0 THEN GOSUB 61900
  430. 60460 IF C = 13 GOTO 60580
  431. 60470 IF C = 17 OR C = 8 GOTO 61150
  432. 60480 IF C = 19 GOTO 60670
  433. 60490 IF C = 4 GOTO 60720
  434. 60500 IF C = 6 GOTO 60780
  435. 60510 IF C = 1 GOTO 60960
  436. 60520 IF KT > MAX GOTO 60410
  437. 60530 IF INSTR(ACT$,W$) = 0 GOTO 61230
  438. 60540 K$(KT) = W$
  439. 60550 PRINT K$(KT);
  440. 60560 IF KT > KTMAX THEN KTMAX = KT
  441. 60570 GOTO 60400
  442. 60580 REM **********  RETURN  **********
  443. 60590 FOR T9 = 1 TO KTMAX
  444. 60600 A$ = A$ + K$(T9)
  445. 60610 NEXT T9
  446. 60620 IF KTMAX = 0 THEN PRINT "1"
  447. 60630 IF KTMAX = 0 THEN DT# = 1
  448. 60640 IF KTMAX = 0 THEN RETURN
  449. 60650 PRINT ""
  450. 60660 GOTO 61260
  451. 60670 REM ********* MOVE CURSE BACK ********
  452. 60680 IF KT = 1 GOTO 60410
  453. 60690 KT = KT - 1
  454. 60700 PRINT CHR$(CH);
  455. 60710 GOTO 60410
  456. 60720 REM ********* MOVE CURSER FORWARD *********
  457. 60730 IF KT >= MAX GOTO 60410
  458. 60740 IF KT > (KTMAX + 1) GOTO 60410
  459. 60750 PRINT K$(KT);
  460. 60760 KT = KT + 1
  461. 60770 GOTO 60410
  462. 60780 REM ********** INSERT ***********
  463. 60790 IF KT > KTMAX GOTO 60410
  464. 60800 X9 = MAX
  465. 60810 WHILE X9 > KT
  466. 60820 X9 = X9 - 1
  467. 60830 K$(X9 + 1) = K$(X9)
  468. 60840 WEND 
  469. 60850 K$(KT) = " "
  470. 60860 KTMAX = KTMAX + 1
  471. 60870 IF KTMAX > MAX THEN KTMAX = MAX
  472. 60880 FOR T9 = KT TO KTMAX
  473. 60890 PRINT K$(T9);
  474. 60900 NEXT T9
  475. 60910 T6 = (KTMAX - KT) + 1
  476. 60920 FOR T7 = 1 TO T6
  477. 60930 PRINT CHR$(CH);
  478. 60940 NEXT T7
  479. 60950 GOTO 60410
  480. 60960 REM ********** DELETE ***********
  481. 60970 IF KT > KTMAX GOTO 60410
  482. 60980 IF KTMAX = 1 GOTO 60410
  483. 60990 K$(MAX + 1) = ""
  484. 61000 X9 = KT 
  485. 61010 WHILE X9 <= MAX
  486. 61020 K$(X9) = K$(X9 + 1)
  487. 61030 X9 = X9 + 1
  488. 61040 WEND 
  489. 61050 KTMAX = KTMAX - 1
  490. 61060 FOR T9 = KT TO KTMAX
  491. 61070 PRINT K$(T9);
  492. 61080 NEXT T9
  493. 61090 PRINT "_";
  494. 61100 T7 = (KTMAX - KT) + 2
  495. 61110 FOR T8 = 1 TO T7
  496. 61120 PRINT CHR$(CH);
  497. 61130 NEXT T8
  498. 61140 GOTO 60410
  499. 61150 REM ********* BACKSPACE ********
  500. 61160 IF KT = 1 GOTO 60410
  501. 61170 KT = KT - 1
  502. 61180 PRINT CHR$(CH);
  503. 61190 K$(KT) = " " 
  504. 61200 PRINT "_";
  505. 61210 PRINT CHR$(CH);
  506. 61220 GOTO 60410
  507. 61230 REM *******  INPUT NOT ACCEPTABLE  ********
  508. 61240 PRINT CHR$(7);
  509. 61250 GOTO 60420
  510. 61260 REM ********* CLEAR STRINGS ********
  511. 61270 MAX = LEN(A$)
  512. 61280 D2$ = ""
  513. 61290 D1$ = ""
  514. 61300 DFLG = 0
  515. 61310 FOR Q93 = 1 TO MAX
  516. 61320 R$ = MID$(A$,Q93,1)
  517. 61330 IF INSTR(DIG$,R$) = 0 GOTO 61400
  518. 61340 IF R$ = "." OR DFLG = 1 GOTO 61380
  519. 61350 IF DFLG = 1 GOTO 61380
  520. 61360 D2$ = D2$ + R$
  521. 61370 GOTO 61400
  522. 61380 D1$ = D1$ + R$
  523. 61390 DFLG = 1
  524. 61400 NEXT Q93
  525. 61410 DA# = VAL(D2$)
  526. 61420 D1# = VAL(D1$)
  527. 61430 DT# = DA# + D1#
  528. 61440 IF K$(1) = "-" THEN DT# =  -DT#   
  529. 61450 RETURN
  530. 61900 REM ****** CHECK FOR ASC0
  531. 61910 S4$ = INKEY$
  532. 61920 C2 =  ASC(S4$)
  533. 61930 IF C2 = 83 THEN C = 1
  534. 61940 IF C2 = 82 THEN C = 6
  535. 61950 IF C2 = 75 THEN C = 19
  536. 61960 IF C2 = 77 THEN C = 4 
  537. 61970 RETURN
  538. 62000 REM **********  ALPHANUMERIC CHECK  **************
  539. 62010 MAX = FL(A,Q)
  540. 62020 GOTO 62040
  541. 62030 REM ********  MAX SET IN PROGRAM  ********
  542. 62040 A$ = ""
  543. 62050 PRINT ">"; 
  544. 62060 FOR N9 = 1 TO MAX
  545. 62070 K$(N9) = ""
  546. 62080 PRINT "_";
  547. 62090 NEXT N9
  548. 62100 PRINT "<";
  549. 62110 T2 = MAX + 1
  550. 62120 FOR T4 = 1 TO T2
  551. 62130 PRINT CHR$(CH);
  552. 62140 NEXT T4
  553. 62150 KT = 0
  554. 62160 KTMAX = 1
  555. 62170 REM ***********  CHECK ALFANUMERIC INPUT FOR LENGTH  ***********
  556. 62180 KT = KT + 1
  557. 62190 PRINT TAB(KT+1)"";
  558. 62200 K$ = INKEY$
  559. 62210 IF K$ = "" GOTO 62200
  560. 62220 C = ASC(K$)
  561. 62230 IF C = 0 THEN GOSUB 61900
  562. 62240 IF C = 13 GOTO 62350
  563. 62250 IF C = 17 OR C = 8 GOTO 62920
  564. 62260 IF C = 19 GOTO 62450
  565. 62270 IF C = 4  GOTO 62500
  566. 62280 IF C = 6 GOTO 62560
  567. 62290 IF C = 1 GOTO 62730
  568. 62300 IF KT > MAX GOTO 62190
  569. 62310 K$(KT) = K$
  570. 62320 PRINT K$(KT);
  571. 62330 IF KT > KTMAX THEN KTMAX = KT
  572. 62340 GOTO 62180
  573. 62350 REM **********  RETURN  **********
  574. 62360 FOR T9 = 1 TO MAX
  575. 62370 A$ = A$ + K$(T9)
  576. 62420 NEXT T9
  577. 62430 PRINT "" 
  578. 62440 RETURN  
  579. 62450 REM ********* MOVE CURSE BACK ********
  580. 62460 IF KT = 1 GOTO 62190
  581. 62470 KT = KT - 1
  582. 62480 PRINT CHR$(CH);
  583. 62490 GOTO 62190
  584. 62500 REM ********* MOVE CURSER FORWARD *********
  585. 62510 IF KT >= MAX GOTO 62190
  586. 62520 IF KT >  KTMAX  GOTO 62190
  587. 62530 PRINT K$(KT);
  588. 62540 KT = KT + 1
  589. 62550 GOTO 62190
  590. 62560 REM ********** INSERT ***********
  591. 62570 X9 = MAX
  592. 62580 WHILE X9 > KT
  593. 62590 X9 = X9 - 1
  594. 62600 K$(X9 + 1) = K$(X9)
  595. 62610 WEND 
  596. 62620 K$(KT) = " "
  597. 62630 KTMAX = KTMAX + 1
  598. 62640 IF KTMAX > MAX THEN KTMAX = MAX
  599. 62650 FOR T9 = KT TO KTMAX
  600. 62660 PRINT K$(T9);
  601. 62670 NEXT T9
  602. 62680 T6 = (KTMAX - KT) +1
  603. 62690 FOR T7 = 1 TO T6
  604. 62700 PRINT CHR$(CH);
  605. 62710 NEXT T7
  606. 62720 GOTO 62190
  607. 62730 REM ********** DELETE ***********
  608. 62740 IF KT > KTMAX GOTO 62200
  609. 62750 IF KTMAX = 1 GOTO 62190
  610. 62760 K$(MAX + 1) = ""
  611. 62770 X9 = KT 
  612. 62780 WHILE X9 <= KTMAX
  613. 62790 K$(X9) = K$(X9 + 1)
  614. 62800 X9 = X9 + 1
  615. 62810 WEND 
  616. 62820 KTMAX = KTMAX - 1
  617. 62830 FOR T9 = KT TO KTMAX
  618. 62840 PRINT K$(T9);
  619. 62850 NEXT T9
  620. 62860 PRINT "_";
  621. 62870 T7 = (KTMAX - KT) + 2
  622. 62880 FOR T6 = 1 TO T7
  623. 62890 PRINT CHR$(CH);
  624. 62900 NEXT T6
  625. 62910 GOTO 62190
  626. 62920 REM ********* BACKSPACE ********
  627. 62930 IF KT = 1 GOTO 62190
  628. 62940 K$(KT) = " "
  629. 62950 KT = KT - 1
  630. 62960 K$(KT) = " "
  631. 62970 PRINT CHR$(CH);
  632. 62980 PRINT "_";
  633. 62990 PRINT CHR$(CH);
  634. 63000 GOTO 62190
  635.  " "
  636. 62950 KT = KT - 1
  637. 62960 K$(KT) = " "
  638. 62970 PRINT CHR$(CH);
  639. 62980 PRINT "_";
  640. 62990 PRINT CHR$(CH);
  641. 63000 GO