home *** CD-ROM | disk | FTP | other *** search
/ Shareware Overload / ShartewareOverload.cdr / database / steel14.zip / CINPUT.BAS < prev    next >
BASIC Source File  |  1980-01-01  |  27KB  |  844 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. 6 DIM PROMPT$(30),IFN(30),IFLD(30),IRNFLD(30),NOS(30),ADDFLD(30,6)
  4. 7 DIM SUBX(30),SUBY(30),MULX(30),MULY(30),TBLOPT(30),TN(30)
  5. 8 DIM TBLFLD(30),XKEY(30),YKEY(30),CMOPT(30),MAXMIN(30,6)
  6. 9 DIM KC(30),CFLD(30)             
  7. 13 DIM L(17),NREC(17)
  8. 16 DIM KY(17,30),KEYLIST(17,30)
  9. 21 DIM TX(10,10)
  10. 35 DIM K$(80)
  11. 50 DIM X(6,30)
  12. 70 CH = 29
  13. 75 PRINT "MEMORY FREE ",FRE(0)
  14. 80 GOSUB 52000
  15. 100 GOSUB 50000
  16. 200 GOTO 10000
  17. 500 REM ******* CLS
  18. 510 CLS 
  19. 520 RETURN
  20. 10000 REM ********  CUSTOM INPUT PROGRAM  *********
  21. 10120 GOSUB 500
  22. 10130 HLD = 0
  23. 10140 PRINT "********  CUSTOM INPUT PROGRAM INITIAL MENU  *********"
  24. 10145 PRINT ""
  25. 10150 PRINT "       0 - EXIT THE PROGRAM "
  26. 10155 PRINT ""
  27. 10160 PRINT "       1 - ENTER A NEW INPUT DESCRIPTION "
  28. 10165 PRINT ""
  29. 10180 PRINT "       2 - READ CUSTOM INPUT DESCRIPTION"
  30. 10185 PRINT ""
  31. 10200 PRINT "       3 - PRINT CUSTOM INPUT DESCRIPTION ON PAPER  "
  32. 10210 PRINT ""
  33. 10220 PRINT "*********  ENTER THE NUMBER THEN PRESS RETURN  ********"
  34. 10240 GOSUB 60000
  35. 10242 IF DT# <0 OR DT#> 3  GOTO 10240
  36. 10250 T = DT#
  37. 10255 IF T = 0 GOTO 51000
  38. 10260 ON T GOTO 10280,10360,10460        
  39. 10280 GOSUB 10540 
  40. 10300 GOSUB 10780
  41. 10320 GOSUB 14500
  42. 10340 GOTO 10120 
  43. 10360 REM *****
  44. 10380 GOSUB 10540
  45. 10400 GOSUB 15600
  46. 10420 GOSUB 16420
  47. 10440 GOTO 10120
  48. 10460 GOSUB 10540
  49. 10480 GOSUB 15600
  50. 10500 GOSUB 17760
  51. 10520 GOTO 10120
  52. 10540 GOSUB 500
  53. 10560 PRINT "**********  WHICH FILE DO YOU WANT  ************"
  54. 10580 PRINT ""
  55. 10600 FOR A = 1 TO MAXF
  56. 10620 PRINT A;" - "; F$(A)
  57. 10640 NEXT A
  58. 10660 PRINT ""
  59. 10680 PRINT "********  ENTER THE NUMBER THEN RETURN  ********"
  60. 10690 MAX = 2
  61. 10700 GOSUB 62030
  62. 10710 AH$ = A$
  63. 10720 A = VAL(A$)
  64. 10730 IF A = 0 THEN A = 1
  65. 10735 IF A = 1 THEN AH$ = "1"
  66. 10740 IF A<1 OR A> MAXF GOTO 10700
  67. 10760 RETURN
  68. 10780 FOR N = 1 TO NREC(A)
  69. 10800 GOSUB 500
  70. 10820 GOSUB 10900
  71. 10840 GOSUB 11380
  72. 10860 NEXT N
  73. 10880 RETURN
  74. 10900 GOSUB 500
  75. 10920 PRINT "FIELD # ";N;" ";FLDN$(A,N)
  76. 10940 IF FTY(A,N) = 1 THEN PRINT "  STRING WITH MAXIMUM LENGTH ";FL(A,N)
  77. 10960 IF FTY(A,N) = 2 THEN PRINT "  INTEGER"
  78. 10980 IF FTY(A,N) = 3 THEN PRINT "  SINGLE PRECISION "
  79. 11000 IF FTY(A,N) = 4 THEN PRINT "  DOUBLE PRECISION "
  80. 11020 IF FTY(A,N) = 5 THEN PRINT "  DOLLARS AND CENTS AMOUNT"
  81. 11040 PRINT "---------------------------------------------------------"
  82. 11060 PRINT "******  WHAT TYPE OF INPUT DO YOU WANT FOR THIS FIELD  ******"
  83. 11080 PRINT " 1 - OPERATOR ENTRY "
  84. 11100 PRINT " 2 - GET FROM ANOTHER FILE"
  85. 11120 PRINT " 3 - ADD SEVERAL PREVIOUS FIELDS     ****  NUMBERS ONLY  ****"
  86. 11140 PRINT " 4 - SUBTRACT TWO PREVIOUS FIELDS          ''  ''  ''  ''    "
  87. 11160 PRINT " 5 - MULTIPLY TWO PREVIOUS FIELDS"
  88. 11180 PRINT " 6 - COMPUTE USING TAX TABLE " 
  89. 11200 PRINT " 7 - CONSTANT"
  90. 11220 PRINT " 8 - MAXIMUM OF PREVIOUS FIELDS"
  91. 11240 PRINT " 9 - MINIMUM OF PREVIOUS FIELDS"
  92. 11260 PRINT "10 - MULTIPLY BY A CONSTANT "
  93. 11280 PRINT "11 - ADD A CONSTANT"
  94. 11300 PRINT "12 - SUBTRACT A CONSTANT FROM A PREVIOUS FIELD"
  95. 11310 PRINT "13 - DIVIDE PREVIOUS FIELDS "
  96. 11320 PRINT "**********  ENTER THE NUMBER THEN PRESS RETURN  *************"
  97. 11340 GOSUB 60000
  98. 11342 IF DT# <1 GOTO 11340
  99. 11344 IF FTY(A,N) = 1 AND DT# > 2 GOTO 11340
  100. 11350 IOPT(N) = DT#
  101. 11360 ON IOPT(N) GOTO 11560,11640,12080,12320,12500,12680,14300,13820,14060,14300,14300,14300,12320
  102. 11370 RETURN
  103. 11380 PRINT "**********  IS THE DATA YOU JUST ENTERED CORRECT  ***********"
  104. 11400 PRINT "                1 - CORRECT"
  105. 11420 PRINT "                2 - NOT CORRECT"
  106. 11440 PRINT "************  ENTER THE NUMBER THEN PRESS RETURN  ***********"
  107. 11460 GOSUB 60000
  108. 11462 IF DT# <1 OR DT#> 2 GOTO 11460
  109. 11470 D = DT#
  110. 11480 IF D = 2 GOTO 10900
  111. 11500 RETURN
  112. 11520 GOTO 11380
  113. 11540 GOTO 10320
  114. 11560 REM ***** OPERATOR ENTRY *****
  115. 11580 PRINT "********************  OPERATOR ENTRY  ******************"
  116. 11590 PRINT "The prompt will be displayed when the input is requested"
  117. 11600 PRINT "*********  ENTER THE PROMPT THEN PRESS RETURN  *********"
  118. 11605 MAX = 75
  119. 11610 GOSUB 62030 
  120. 11615 PROMPT$(N) = A$
  121. 11620 RETURN  
  122. 11640 REM ******  GET FROM ANOTHER FILE  ******
  123. 11660 PRINT "***************  GET FROM ANOTHER FILE  ***************"
  124. 11680 FOR F = 1 TO MAXF
  125. 11700 PRINT F;" - ";F$(F)
  126. 11720 NEXT F
  127. 11740 PRINT "******  WHICH FILE DO YOU WANT TO GET ENTRY FROM  ******"
  128. 11750 PRINT "Must be the same file for all fields "
  129. 11760 PRINT "*********  ENTER THE NUMBER THEN PRESS RETURN  *********"
  130. 11780 GOSUB 60000
  131. 11782 IF DT# <1 OR DT#> MAXF GOTO 11780
  132. 11784 IF HLD > 0 AND DT# >< HLD GOTO 11780
  133. 11785 IFN(N) = DT#
  134. 11787 HLD = DT#
  135. 11800 B = IFN(N)
  136. 11820 FOR T = 1 TO NREC(B)
  137. 11840 PRINT T;" - ";FLDN$(B,T)
  138. 11860 NEXT T
  139. 11880 PRINT "******  WHICH FIELD DO YOU WANT TO GET ENTRY FROM  ******"
  140. 11900 PRINT "*********  ENTER THE NUMBER THEN PRESS RETURN  **********"
  141. 11920 GOSUB 60000
  142. 11922 IF DT# <1 OR DT#> NREC(B)  GOTO 11920
  143. 11930 IFLD(N) = DT#
  144. 11940 FOR T = 1 TO NREC(A)
  145. 11960 PRINT T;" - ";FLDN$(A,T)
  146. 11980 NEXT T
  147. 12000 PRINT "**********  RECORD NUMBER EQUALS WHICH FIELD  ***********"
  148. 12020 PRINT "*******  ENTER THE FIELD NUMBER THEN PRESS RETURN  ******"
  149. 12040 GOSUB 60000
  150. 12042 IF DT# <1 OR DT#> NREC(B) GOTO 12040
  151. 12050 IRNFLD(N) = DT#
  152. 12060 RETURN  
  153. 12080 REM ***** ADD PREVIOUS FIELDS *****
  154. 12090 X(5,N) = DT#
  155. 12100 PRINT "*************  ADD PREVIOUS FIELDS  ************"
  156. 12120 PRINT "*****  HOW MANY FIELDS DO YOU WANT TO ADD  *****"
  157. 12140 PRINT "*****  ENTER THE NUMBER THEN PRESS RETURN  *****"
  158. 12145 GOSUB 60000
  159. 12147 IF DT# <1 OR DT#> NREC(A) GOTO 12145
  160. 12150 NOS(N) = DT#
  161. 12160 FOR T = 1 TO NREC(A)
  162. 12180 PRINT T;" - ";FLDN$(A,T)
  163. 12200 NEXT T
  164. 12220 FOR J = 1 TO NOS(N)
  165. 12240 PRINT "*****  ENTER THE ";J;"th FIELD TO BE ADDED  *****"
  166. 12260 GOSUB 60000
  167. 12262 IF DT# <1 OR DT#> NREC(A)  GOTO 12260
  168. 12264 IF FTY(A,DT#) = 1 GOTO 12260
  169. 12270 ADDFLD(N,J) = DT#
  170. 12280 NEXT J
  171. 12300 RETURN
  172. 12320 REM ***** SUBTRACT FIELDS *****
  173. 12340 IF IOPT(N) = 4 THEN PRINT "********  SUBTRACT FIELD X  - FIELD  Y  *****"
  174. 12350 IF IOPT(N) = 13 THEN PRINT "*******  DIVIDE FIELD X BY FIELD Y  ********"
  175. 12360 FOR T = 1 TO NREC(A)
  176. 12380 PRINT T;" - ";FLDN$(A,T)
  177. 12400 NEXT T
  178. 12440 PRINT "*****  ENTER FIELD X THEN PRESS RETURN  *****"
  179. 12445 GOSUB 60000
  180. 12447 IF DT# <1 OR DT#> NREC(A) GOTO 12445
  181. 12448 IF FTY(A,DT#) = 1 GOTO 12445
  182. 12450 SUBX(N) = DT#
  183. 12460 PRINT "*****  ENTER FIELD Y THEN PRESS RETURN  *****"
  184. 12462 GOSUB 60000
  185. 12464 IF DT# <1 OR DT#> NREC(A) GOTO 12462
  186. 12465 SUBY(N) = DT#
  187. 12467 IF FTY(A,DT#) = 1 GOTO 12462
  188. 12480 RETURN
  189. 12500 REM ***** MULTIPY FIELDS ***** 
  190. 12520 PRINT "************  MULTIPLY FIELDS  *************"
  191. 12540 FOR T = 1 TO NREC(A)
  192. 12560 PRINT T;" - ";FLDN$(A,T)
  193. 12580 NEXT T
  194. 12600 PRINT "**********  FIELD X TIMES FIELD Y  **********"
  195. 12620 PRINT "*****  ENTER FIELD X THEN PRESS RETURN  *****"
  196. 12625 GOSUB 60000
  197. 12627 IF DT# <1 OR DT#> NREC(A)  GOTO 12625
  198. 12628 IF FTY(A,DT#) = 1 GOTO 12625
  199. 12630 MULX(N) = DT#
  200. 12640 PRINT "*****  ENTER FIELD Y THEN PRESS RETURN  *****"
  201. 12645 GOSUB 60000
  202. 12647 IF DT# <1 OR DT#> NREC(A)  GOTO 12645
  203. 12648 IF FTY(A,DT#) = 1 GOTO 12645
  204. 12650 MULY(N) = DT#
  205. 12660 RETURN
  206. 12680 REM *********  TAX COMPUTE  *********
  207. 12700 GOSUB 500
  208. 12720 PRINT "*****************  IS THE TAX TABLE  *****************"
  209. 12740 PRINT "                    1 - CONSTANT "
  210. 12760 PRINT "                    2 - VARIABLE "
  211. 12780 PRINT "*********  ENTER THE NUMBER THEN PRESS RETURN  ********"
  212. 12782 IF DT# <1 OR DT#> 2 GOTO 12800
  213. 12800 GOSUB 60000
  214. 12802 IF DT# <1 OR DT#> 2 GOTO 12800
  215. 12810 X(1,N) = DT#
  216. 12820 ON X(1,N) GOSUB 13240,13380
  217. 12840 GOSUB 500
  218. 12860 PRINT "*****************  IS THE PAY PERIOD  *****************"
  219. 12880 PRINT "                    1 - CONSTANT "
  220. 12900 PRINT "                    2 - VARIABLE "
  221. 12920 PRINT "********  ENTER THE NUMBER THEN PRESS RETURN  *********"
  222. 12940 GOSUB 60000
  223. 12942 IF DT# <1 OR DT#> 2 GOTO 12940
  224. 12950 X(3,N) = DT#
  225. 12960 ON X(3,N) GOSUB 13540,13660
  226. 12980 PRINT "*******  WHICH FIELD IS SINGLE / MARRIED FIELD  ********"
  227. 13000 FOR T = 1 TO N
  228. 13020 PRINT T;"-";FLDN$(A,T)
  229. 13040 NEXT T
  230. 13060 PRINT "**********  ENTER THE NUMBER THEN PRESS RETURN  *********"
  231. 13080 GOSUB 60000
  232. 13082 IF DT# <1 OR DT#> NREC(A) GOTO 13080
  233. 13084 IF FTY(A,DT#) = 1 GOTO 13080
  234. 13090 X(5,N) = DT#
  235. 13100 PRINT "***************  WHICH FIELD IS THE PAY  ****************"
  236. 13120 FOR T = 1 TO N
  237. 13140 PRINT T;"-";FLDN$(A,T)
  238. 13160 NEXT T
  239. 13180 PRINT "**********  ENTER THE NUMBER THEN PRESS RETURN  *********"
  240. 13200 GOSUB 60000
  241. 13202 IF DT# <1 OR DT#> NREC(A) GOTO 13200
  242. 13204 IF FTY(A,DT#) = 1 GOTO 13200
  243. 13210 X(6,N) = DT#
  244. 13220 RETURN
  245. 13240 REM *******  TAX TABLE = CONSTANT
  246. 13260 PRINT "***************  ENTER THE TABLE NUMBER  ****************"
  247. 13280 PRINT ""
  248. 13300 PRINT "**********  ENTER THE NUMBER THEN PRESS RETURN  *********"
  249. 13320 PRINT ""
  250. 13340 GOSUB 60000
  251. 13350 X(2,N) = DT#
  252. 13360 RETURN 
  253. 13380 REM *******  TAX TABLE VARIABLE
  254. 13400 PRINT "*********  WHICH FIELD CONTAINS THE TABLE NUMBER  *******"
  255. 13420 FOR T = 1 TO N
  256. 13440 PRINT T;"-";FLDN$(A,T)
  257. 13460 NEXT T
  258. 13480 PRINT "***********  ENTER THE NUMBER THEN PRESS RETURN  ********"
  259. 13500 GOSUB 60000
  260. 13502 IF DT# <1 OR DT#> NREC(A) GOTO 13500
  261. 13510 X(2,N) = DT#
  262. 13520 RETURN
  263. 13540 REM *******  PAY PERIOD CONSTANT
  264. 13560 PRINT "*************  ENTER THE PAY PERIOD CONSTANT  ***********"
  265. 13580 PRINT ""
  266. 13600 PRINT "**********  ENTER THE CONSTANT THEN PRESS RETURN  *******"
  267. 13620 GOSUB 60000
  268. 13630 X(4,N) = DT#
  269. 13640 RETURN
  270. 13660 REM *******  PAY PERIOD VARIABLE
  271. 13680 PRINT "******  WHICH FIELD CONTAINS THE PAY PERIOD NUMBER  *****"
  272. 13700 FOR T = 1 TO N
  273. 13720 PRINT T;"-";FLDN$(A,T)
  274. 13740 NEXT T
  275. 13760 PRINT "**********  ENTER THE NUMBER THEN PRESS RETURN  *********"
  276. 13780 GOSUB 60000
  277. 13782 IF DT# <1 OR DT#> NREC(A) GOTO 13780
  278. 13783 IF DT# = 1 GOTO 13780
  279. 13790 X(4,N) = DT#
  280. 13800 RETURN
  281. 13820 REM ************  MAXIMUM  **************
  282. 13840 PRINT "***************  MAXIMUM OF ITEMS  ****************"
  283. 13860 PRINT "*****  HOW MANY ITEMS DO YOU WANT TO COMPARE  *****"
  284. 13880 GOSUB 60000
  285. 13890 NOS(N) = DT#
  286. 13900 FOR T = 1 TO NREC(A)
  287. 13920 PRINT T;" - ";FLDN$(A,T)
  288. 13940 NEXT T
  289. 13960 FOR J = 1 TO NOS(N)
  290. 13980 PRINT "******  ENTER THE ";J;"th ITEM TO BE COMPARED  *****"
  291. 14000 GOSUB 60000
  292. 14002 IF DT# <1 OR DT#> NREC(A) GOTO 14000
  293. 14004 IF FTY(A,DT#) = 1 GOTO 14000
  294. 14010 MAXMIN(N,J) = DT#
  295. 14020 NEXT J
  296. 14040 RETURN 
  297. 14060 REM ************  MINIMUM  **************
  298. 14080 PRINT "**************  MINIMUM OF ITEMS  ****************"
  299. 14100 PRINT "*****  HOW MANY ITEMS DO YOU WANT TO COMPARE *****"
  300. 14120 GOSUB 60000
  301. 14130 NOS(N) = DT#
  302. 14140 FOR T = 1 TO NREC(A)
  303. 14160 PRINT T;" - ";FLDN$(A,T)
  304. 14180 NEXT T
  305. 14200 FOR J = 1 TO NOS(N)
  306. 14220 PRINT "*****  ENTER THE ";J;"th ITEM TO BE COMPARED  *****"
  307. 14240 GOSUB 60000
  308. 14242 IF DT# <1 OR DT#> NREC(A) GOTO 14240
  309. 14244 IF FTY(A,DT#) = 1 GOTO 14240
  310. 14250 MAXMIN(N,J) = DT#
  311. 14260 NEXT J
  312. 14280 RETURN
  313. 14300 REM ***********  CONSTANT  ************
  314. 14320 PRINT "**************  ENTER CONSTANT  ****************"
  315. 14340 GOSUB 60180
  316. 14350 KC(N) = DT#
  317. 14360 IF IOPT(N) = 7 THEN RETURN
  318. 14380 FOR T = 1 TO NREC(A)
  319. 14400 PRINT T;" - ";FLDN$(A,T)
  320. 14420 NEXT T
  321. 14440 PRINT "*********  WHAT FIELD IS OPERATED ON  **********"
  322. 14460 GOSUB 60000
  323. 14462 IF DT# <1 OR DT#> NREC(A) GOTO 14460
  324. 14464 IF FTY(A,DT#) = 1 GOTO 14460
  325. 14470 CFLD(N) = DT#
  326. 14480 RETURN
  327. 14500 REM **********  OPEN IPUTD  **********
  328. 14520 GOSUB 500
  329. 14540 PRINT "*************  WRITING DATA ON FILE  ***************"
  330. 14560 N$ = "IPUTD" + AH$
  331. 14580 OPEN "O",#1,N$     
  332. 14600 WRITE #1,NREC(A)
  333. 14620 FOR N = 1 TO NREC(A)
  334. 14640 WRITE #1,IOPT(N)
  335. 14660 ON IOPT(N) GOTO 14680,14740,14800,14940,15000,15060,15260,15140,15140,15260,15260,15260,14940
  336. 14680 REM *****  OPERATOR ENTRY  *****
  337. 14700 WRITE #1,PROMPT$(N)
  338. 14720 GOTO 15300
  339. 14740 REM *****  GET FROM ANOTHER FILE  *****
  340. 14760 WRITE #1,IFN(N),IFLD(N),IRNFLD(N)
  341. 14780 GOTO 15300
  342. 14800 REM *****  ADD PREVIOUS FIELDS  ******
  343. 14820 WRITE #1,NOS(N)
  344. 14840 FOR T = 1 TO NOS(N)
  345. 14860 Q = ADDFLD(N,T)
  346. 14880 WRITE #1,ADDFLD(N,T)
  347. 14900 NEXT T
  348. 14920 GOTO 15300
  349. 14940 REM *****  SUBTRACT PREVIOUS FIELDS  ******
  350. 14960 WRITE #1, SUBX(N),SUBY(N)
  351. 14980 GOTO 15300
  352. 15000 REM *****  MULTIPLY FIELDS  *****
  353. 15020 WRITE #1, MULX(N),MULY(N)
  354. 15040 GOTO 15300
  355. 15060 REM *****  TAX  TABLE  *****
  356. 15080 WRITE #1,X(1,N),X(2,N),X(3,N),X(4,N),X(5,N),X(6,N)
  357. 15100 GOTO 15300
  358. 15120 WRITE #1,CMOPT(N)
  359. 15140 REM *****  MAXIMUM  ******
  360. 15160 WRITE #1,NOS(N)
  361. 15180 FOR T = 1 TO NOS(N)
  362. 15200 WRITE #1,MAXMIN(N,T)
  363. 15220 NEXT T
  364. 15240 GOTO 15300
  365. 15260 REM *****  CONSTANT  *****
  366. 15280 WRITE #1,KC(N),CFLD(N)
  367. 15300 NEXT N
  368. 15320 CLOSE #1
  369. 15340 RETURN
  370. 15600 REM **********  OPEN IPUTD  **********
  371. 15620 GOSUB 500
  372. 15640 PRINT "*************  READING DATA FROM FILE  ***************"
  373. 15660 N$ = "IPUTD" + A$
  374. 15680 OPEN "I",#1,N$     
  375. 15700 INPUT #1,NREC(A)
  376. 15720 FOR N = 1 TO NREC(A)
  377. 15740 INPUT #1,IOPT(N)
  378. 15760 ON IOPT(N) GOTO 15780,15840,15900,16020,16080,16140,16320,16200,16200,16320,16320,16320,16020
  379. 15780 REM *****  OPERATOR ENTRY  *****
  380. 15800 INPUT #1,PROMPT$(N)
  381. 15820 GOTO 16360
  382. 15840 REM *****  GET FROM ANOTHER FILE  *****
  383. 15860 INPUT #1,IFN(N),IFLD(N),IRNFLD(N)
  384. 15880 GOTO 16360
  385. 15900 REM *****  ADD PREVIOUS FIELDS  ******
  386. 15920 INPUT #1,NOS(N)
  387. 15940 FOR T = 1 TO NOS(N)
  388. 15960 INPUT #1,ADDFLD(N,T)
  389. 15980 NEXT T
  390. 16000 GOTO 16360
  391. 16020 REM *****  SUBTRACT PREVIOUS FIELDS  ******
  392. 16040 INPUT #1, SUBX(N),SUBY(N)
  393. 16060 GOTO 16360
  394. 16080 REM *****  MULTIPLY FIELDS  *****
  395. 16100 INPUT #1, MULX(N),MULY(N)
  396. 16120 GOTO 16360
  397. 16140 REM *****  GET FROM A TABLE  *****
  398. 16160 INPUT #1,X(1,N),X(2,N),X(3,N),X(4,N),X(5,N),X(6,N)
  399. 16180 GOTO 16360
  400. 16200 REM *****  MAXIMUM  ******
  401. 16220 INPUT #1,NOS(N)
  402. 16240 FOR T = 1 TO NOS(N)
  403. 16260 INPUT #1,MAXMIN(N,T)
  404. 16280 NEXT T
  405. 16300 GOTO 16360
  406. 16320 REM *****  CONSTANT  *****
  407. 16340 INPUT #1,KC(N),CFLD(N)
  408. 16360 NEXT N
  409. 16380 CLOSE #1
  410. 16400 RETURN
  411. 16420 REM **********  PRINT IPUTD  **********
  412. 16460 GOSUB 500
  413. 16480 PRINT N$   
  414. 16500 FOR N = 1 TO NREC(A)
  415. 16520 PRINT "**********  ";N;" ";FLDN$(A,N);"  ************"
  416. 16540 PRINT " INPUT OPTION ";IOPT(N);" ";
  417. 16560 ON IOPT(N) GOTO 16580,16660,16800,16920,17020,17120,17620,17480,17480,17620,17620,17620,16920
  418. 16563 PRINT ""
  419. 16565 GOTO 17680
  420. 16580 REM *****  OPERATOR ENTRY  *****
  421. 16600 PRINT "OPERATOR ENTRY"
  422. 16620 PRINT "PROMPT ";PROMPT$(N)
  423. 16640 GOTO 17680
  424. 16660 REM *****  GET FROM ANOTHER FILE  *****
  425. 16680 PRINT "GET FROM ANOTHER FILE  "
  426. 16690 PRINT "FROM FILE:  FROM FIELD:            SOURCE RECORD NUMBER IS THIS FIELDS VALUE:"
  427. 16700 Q=IFN(N)
  428. 16720 W = IFLD(N)
  429. 16740 Z = IRNFLD(N)
  430. 16760 PRINT F$(Q),TAB(15) FLDN$(Q,W),TAB(38) FLDN$(A,Z)
  431. 16780 GOTO 17680
  432. 16800 REM *****  ADD PREVIOUS FIELDS  ******
  433. 16820 PRINT "ADD PREVIOUS FIELDS  #OF ADDS : ";NOS(N)
  434. 16840 FOR T = 1 TO NOS(N)
  435. 16860 PRINT "ADD THIS FIELD ";ADDFLD(N,T);FLDN$(A,Q)
  436. 16880 NEXT T
  437. 16900 GOTO 17680
  438. 16920 REM *****  SUBTRACT PREVIOUS FIELDS  ******
  439. 16940 Q = SUBX(N)
  440. 16960 W = SUBY(N)
  441. 16980 IF IOPT(N) = 4 THEN PRINT "SUBTRACT ";SUBX(N);FLDN$(A,Q);SUBY(N);FLDN$(A,W)
  442. 16990 IF IOPT(N) = 13 THEN PRINT "DIVIDE ";SUBX(N);FLDN$(A,Q);SUBY(N);FLDN$(A,W)
  443. 17000 GOTO 17680
  444. 17020 REM *****  MULTIPLY FIELDS  *****
  445. 17040 Q = MULX(N)
  446. 17060 W = MULY(N)
  447. 17080 PRINT "MULTIPLY "; MULX(N);FLDN$(A,Q);MULY(N);FLDN$(A,W)
  448. 17100 GOTO 17680
  449. 17120 REM *****  GET FROM A TABLE  *****
  450. 17140 ON X(1,N) GOSUB 17340,17280
  451. 17160 ON X(3,N) GOSUB 17440,17380
  452. 17180 Y = X(5,N)
  453. 17200 PRINT "SINGLE MARRIED FIELD NUMBER =";X(5,N);FLDN$(A,Y)
  454. 17220 Y = X(6,N)
  455. 17240 PRINT "PAY FIELD NUMBER = "X(6,N);FLDN$(A,Y)
  456. 17260 GOTO 17680
  457. 17280 Y = X(2,N)
  458. 17300 PRINT " TAX TABLE VARIES NUMBER = FIELD ";FLDN$(A,Y)
  459. 17320 RETURN
  460. 17340 PRINT "TAX TABLE CONSTANT NUMBER =";X(2,N)
  461. 17360 RETURN
  462. 17380 Y = X(4,N)
  463. 17400 PRINT "PAY PERIOD VARIES  NUMBER = FIELD ";FLDN$(A,Y)
  464. 17420 RETURN
  465. 17440 PRINT "PAY PERIOD CONSTANT  NUMBER = ";X(4,N)
  466. 17460 RETURN
  467. 17480 REM *****  MAXIMUM  ******
  468. 17500 PRINT "MAX OR MIN  NUMBER OF ITMS";NOS(N)
  469. 17520 FOR T = 1 TO NOS(N)
  470. 17540 Q = MAXMIN(N,T)
  471. 17560 PRINT "COMPARE : ";MAXMIN(N,T);FLDN$(A,Q)
  472. 17580 NEXT T
  473. 17600 GOTO 17680
  474. 17620 REM *****  CONSTANT  *****
  475. 17640 Q = CFLD(N)
  476. 17660 PRINT "CONSTANT";KC(N);CFLD(N);FLDN$(A,Q)
  477. 17680 NEXT N
  478. 17700 PRINT "*******  PRESS ANY KEY TO CONTINUE  *******"
  479. 17720 IF INKEY$ = "" GOTO 17720
  480. 17740 RETURN
  481. 17760 REM **********  LPRINT IPUTD  **********
  482. 17800 GOSUB 500
  483. 17820 LPRINT N$   
  484. 17840 FOR N = 1 TO NREC(A)
  485. 17860 LPRINT "**********  ";N;" ";FLDN$(A,N);"  ************"
  486. 17880 LPRINT " INPUT OPTION ";IOPT(N);" ";
  487. 17900 ON IOPT(N) GOTO 17920,18000,18140,18260,18360,18460,18960,18820,18820,18960,18960,18960,18260
  488. 17905 LPRINT ""
  489. 17910 GOTO 19020
  490. 17920 REM *****  OPERATOR ENTRY  *****
  491. 17940 LPRINT "OPERATOR ENTRY"
  492. 17960 LPRINT "PROMPT ";PROMPT$(N)
  493. 17980 GOTO 19020
  494. 18000 REM *****  GET FROM ANOTHER FILE  *****
  495. 18020 LPRINT "GET FROM ANOTHER FILE "
  496. 18030 LPRINT "FROM FILE:   FROM FIELD            SOURCE RECORD NUMBER IS THIS FIELDS VALUE:"
  497. 18040 Q=IFN(N)
  498. 18060 W = IFLD(N)
  499. 18080 Z = IRNFLD(N)
  500. 18100 LPRINT F$(Q),TAB(15) FLDN$(Q,W),TAB(39) FLDN$(A,Z)
  501. 18120 GOTO 19020
  502. 18140 REM *****  ADD PREVIOUS FIELDS  ******
  503. 18160 LPRINT "ADD PREVIOUS FIELDS  #OF ADDS : ";NOS(N)
  504. 18180 FOR T = 1 TO NOS(N)
  505. 18200 LPRINT "ADD THIS FIELD ";ADDFLD(N,T);FLDN$(A,Q)
  506. 18220 NEXT T
  507. 18240 GOTO 19020
  508. 18260 REM *****  SUBTRACT PREVIOUS FIELDS  ******
  509. 18280 Q = SUBX(N)
  510. 18300 W = SUBY(N)
  511. 18320 IF IOPT(N) = 13 THEN  LPRINT "DIVIDE ";SUBX(N);FLDN$(A,Q);SUBY(N);FLDN$(A,W)
  512. 18330 IF IOPT(N) = 4 THEN LPRINT "SUBTRACT ";SUBX(N);FLDN$(A,Q);SUBY(N);FLDN$(A,W)
  513. 18340 GOTO 19020
  514. 18360 REM *****  MULTIPLY FIELDS  *****
  515. 18380 Q = MULX(N)
  516. 18400 W = MULY(N)
  517. 18420 LPRINT "MULTIPLY "; MULX(N);FLDN$(A,Q);MULY(N);FLDN$(A,W)
  518. 18440 GOTO 19020
  519. 18460 REM *****  GET FROM A TABLE  *****
  520. 18480 ON X(1,N) GOSUB 18680,18620
  521. 18500 ON X(3,N) GOSUB 18780,18720
  522. 18520 Y = X(5,N)
  523. 18540 LPRINT "SINGLE MARRIED FIELD NUMBER =";X(5,N);FLDN$(A,Y)
  524. 18560 Y = X(6,N)
  525. 18580 LPRINT "PAY FIELD NUMBER = "X(6,N);FLDN$(A,Y)
  526. 18600 GOTO 19020
  527. 18620 Y = X(2,N)
  528. 18640 LPRINT " TAX TABLE VARIES NUMBER = FIELD ";FLDN$(A,Y)
  529. 18660 RETURN
  530. 18680 LPRINT "TAX TABLE CONSTANT NUMBER =";X(2,N)
  531. 18700 RETURN
  532. 18720 Y = X(4,N)
  533. 18740 LPRINT "PAY PERIOD VARIES  NUMBER = FIELD ";FLDN$(A,Y)
  534. 18760 RETURN
  535. 18780 LPRINT "PAY PERIOD CONSTANT  NUMBER = ";X(4,N)
  536. 18800 RETURN
  537. 18820 REM *****  MAXIMUM  ******
  538. 18840 LPRINT "MAX OR MIN  NUMBER OF ITMS";NOS(N)
  539. 18860 FOR T = 1 TO NOS(N)
  540. 18880 Q = MAXMIN(N,T)
  541. 18900 LPRINT "COMPARE : ";MAXMIN(N,T);FLDN$(A,Q)
  542. 18920 NEXT T
  543. 18940 GOTO 19020
  544. 18960 REM *****  CONSTANT  *****
  545. 18980 Q = CFLD(N)
  546. 19000 LPRINT "CONSTANT";KC(N);CFLD(N);FLDN$(A,Q)
  547. 19020 NEXT N
  548. 19040 RETURN
  549. 23780 REM *************  READ SUBROUTINE  *************
  550. 23800 OPEN "I",#1,"FFILE"
  551. 23820 INPUT #1,MAXF
  552. 23840 FOR A = 1 TO MAXF
  553. 23860 INPUT #1,A,F$(A),NREC(A),L(A)
  554. 23880 FOR N = 1 TO NREC(A)
  555. 23900 INPUT #1,FLDN$(A,N),FTY(A,N),FL(A,N)
  556. 23920 IF FTY(A,N) = 2 THEN INPUT #1,KY(A,N),KEYLIST(A,N)
  557. 23940 NEXT N
  558. 23960 NEXT A
  559. 23980 CLOSE #1
  560. 24000 RETURN
  561. 50000 REM **********  INTRO
  562. 50010 GOSUB 500
  563. 50100 PRINT "               I N P U T    P R O G R A M    3.0   "
  564. 50105 PRINT ""
  565. 50110 PRINT "      Copyright 1984 by Potomac Pacific Engineering Inc."
  566. 50120 PRINT ""
  567. 50130 PRINT "This program is licensed FREE to all users with some restrictions"
  568. 50165 PRINT "        See the manual for more information on the license."
  569. 50167 PRINT ""
  570. 50920 GOSUB 23780
  571. 50950 PRINT "******************  PRESS ANY KEY TO CONTINUE  *****************";
  572. 50960 IF INKEY$ = "" GOTO 50960
  573. 50970 RETURN
  574. 51000 REM ***** EXIT TO SYSTEM
  575. 51100 GOSUB 500
  576. 51110 CLOSE
  577. 51120 PRINT " -BYE, Have a nice day"
  578. 51130 END
  579. 52000 REM ***** INTRO 1
  580. 52010 GOSUB 500
  581. 52100 PRINT "           Put the DATA DISK in the default disk drive  "
  582. 52110 PRINT ""
  583. 52120 PRINT "          *****  THEN PRESS ANY KEY TO CONTINUE  *****"
  584. 52130 PRINT ""
  585. 52140 PRINT "      The  CUSTOM  programs only use the PROGRAM DATA DISK"
  586. 52150 PRINT "Keep it in the default disk drive at all times during this program."
  587. 52200 IF INKEY$ = "" GOTO 52200
  588. 52210 RETURN
  589. 60000 REM *******  INTEGER LESS THEN 100 CHECK  ********
  590. 60010 MAX = 2
  591. 60020 ACT$ = "1234567890=<>^"
  592. 60030 IF NE = 0 THEN ACT$ = "1234567890"
  593. 60040 PRINT ">__<";
  594. 60045 GOTO 60240
  595. 60050 REM
  596. 60060 REM *******  INTEGER *******                        
  597. 60070 MAX = 8
  598. 60080 ACT$ = "1234567890-+,=<>^"
  599. 60090 IF NE = 0 THEN ACT$ = "1234567890-+,"
  600. 60100 PRINT ">________<";
  601. 60110 GOTO 60240
  602. 60120 REM *******  SINGLE PRECISION  *******                        
  603. 60130 MAX = 10
  604. 60140 ACT$ = "1234567890-+,.%$=<>^"
  605. 60150 IF NE = 0 THEN ACT$ = "1234567890+-,.%$"
  606. 60160 PRINT ">__________<";
  607. 60170 GOTO 60240
  608. 60180 REM *******  DOUBLE PRECISION  *******                        
  609. 60190 MAX = 20
  610. 60200 ACT$ = "1234567890-+,.%$=<>^"
  611. 60210 IF NE = 0 THEN ACT$ = "1234567890+-,.%$"
  612. 60220 PRINT ">____________________<";
  613. 60230 GOTO 60240
  614. 60240 REM ********** NUMBER CHECK **********
  615. 60250 A$ = ""
  616. 60260 K$(20) = " "
  617. 60270 KTMAX = 0
  618. 60280 FOR T9 = 1 TO MAX
  619. 60290 K$(T9) = " "
  620. 60300 NEXT T9
  621. 60310 DIG$ = "1234567890."
  622. 60320 DOTFLG = 0
  623. 60330 T2 = MAX + 1
  624. 60340 FOR T6 = 1 TO T2
  625. 60350 PRINT CHR$(CH);
  626. 60360 NEXT T6
  627. 60370 IF INKEY$ = "" GOTO 60380 ELSE GOTO 60370
  628. 60380 KT = 0
  629. 60390 REM ***********  CHECK ALFANUMERIC INPUT FOR LENGTH  ***********
  630. 60400 KT = KT + 1
  631. 60410 REM     
  632. 60420 W$ = INKEY$
  633. 60430 IF W$ = "" GOTO 60420
  634. 60440 C = ASC(W$)
  635. 60450 IF C = 0 THEN GOSUB 61900
  636. 60460 IF C = 13 GOTO 60580
  637. 60470 IF C = 17 OR C = 8 GOTO 61150
  638. 60480 IF C = 19 GOTO 60670
  639. 60490 IF C = 4 GOTO 60720
  640. 60500 IF C = 6 GOTO 60780
  641. 60510 IF C = 1 GOTO 60960
  642. 60520 IF KT > MAX GOTO 60410
  643. 60530 IF INSTR(ACT$,W$) = 0 GOTO 61230
  644. 60540 K$(KT) = W$
  645. 60550 PRINT K$(KT);
  646. 60560 IF KT > KTMAX THEN KTMAX = KT
  647. 60570 GOTO 60400
  648. 60580 REM **********  RETURN  **********
  649. 60590 FOR T9 = 1 TO KTMAX
  650. 60600 A$ = A$ + K$(T9)
  651. 60610 NEXT T9
  652. 60620 IF KTMAX = 0 THEN PRINT "1"
  653. 60630 IF KTMAX = 0 THEN DT# = 1
  654. 60640 IF KTMAX = 0 THEN RETURN
  655. 60650 PRINT ""
  656. 60660 GOTO 61260
  657. 60670 REM ********* MOVE CURSE BACK ********
  658. 60680 IF KT = 1 GOTO 60410
  659. 60690 KT = KT - 1
  660. 60700 PRINT CHR$(CH);
  661. 60710 GOTO 60410
  662. 60720 REM ********* MOVE CURSER FORWARD *********
  663. 60730 IF KT >= MAX GOTO 60410
  664. 60740 IF KT > (KTMAX + 1) GOTO 60410
  665. 60750 PRINT K$(KT);
  666. 60760 KT = KT + 1
  667. 60770 GOTO 60410
  668. 60780 REM ********** INSERT ***********
  669. 60790 IF KT > KTMAX GOTO 60410
  670. 60800 X9 = MAX
  671. 60810 WHILE X9 > KT
  672. 60820 X9 = X9 - 1
  673. 60830 K$(X9 + 1) = K$(X9)
  674. 60840 WEND 
  675. 60850 K$(KT) = " "
  676. 60860 KTMAX = KTMAX + 1
  677. 60870 IF KTMAX > MAX THEN KTMAX = MAX
  678. 60880 FOR T9 = KT TO KTMAX
  679. 60890 PRINT K$(T9);
  680. 60900 NEXT T9
  681. 60910 T6 = (KTMAX - KT) + 1
  682. 60920 FOR T7 = 1 TO T6
  683. 60930 PRINT CHR$(CH);
  684. 60940 NEXT T7
  685. 60950 GOTO 60410
  686. 60960 REM ********** DELETE ***********
  687. 60970 IF KT > KTMAX GOTO 60410
  688. 60980 IF KTMAX = 1 GOTO 60410
  689. 60990 K$(MAX + 1) = ""
  690. 61000 X9 = KT 
  691. 61010 WHILE X9 <= MAX
  692. 61020 K$(X9) = K$(X9 + 1)
  693. 61030 X9 = X9 + 1
  694. 61040 WEND 
  695. 61050 KTMAX = KTMAX - 1
  696. 61060 FOR T9 = KT TO KTMAX
  697. 61070 PRINT K$(T9);
  698. 61080 NEXT T9
  699. 61090 PRINT "_";
  700. 61100 T7 = (KTMAX - KT) + 2
  701. 61110 FOR T8 = 1 TO T7
  702. 61120 PRINT CHR$(CH);
  703. 61130 NEXT T8
  704. 61140 GOTO 60410
  705. 61150 REM ********* BACKSPACE ********
  706. 61160 IF KT = 1 GOTO 60410
  707. 61170 KT = KT - 1
  708. 61180 PRINT CHR$(CH);
  709. 61190 K$(KT) = " " 
  710. 61200 PRINT "_";
  711. 61210 PRINT CHR$(CH);
  712. 61220 GOTO 60410
  713. 61230 REM *******  INPUT NOT ACCEPTABLE  ********
  714. 61240 PRINT CHR$(7);
  715. 61250 GOTO 60420
  716. 61260 REM ********* CLEAR STRINGS ********
  717. 61270 MAX = LEN(A$)
  718. 61280 D2$ = ""
  719. 61290 D1$ = ""
  720. 61300 DFLG = 0
  721. 61310 FOR Q93 = 1 TO MAX
  722. 61320 R$ = MID$(A$,Q93,1)
  723. 61330 IF INSTR(DIG$,R$) = 0 GOTO 61400
  724. 61340 IF R$ = "." OR DFLG = 1 GOTO 61380
  725. 61350 IF DFLG = 1 GOTO 61380
  726. 61360 D2$ = D2$ + R$
  727. 61370 GOTO 61400
  728. 61380 D1$ = D1$ + R$
  729. 61390 DFLG = 1
  730. 61400 NEXT Q93
  731. 61410 DA# = VAL(D2$)
  732. 61420 D1# = VAL(D1$)
  733. 61430 DT# = DA# + D1#
  734. 61440 IF K$(1) = "-" THEN DT# =  -DT#   
  735. 61450 RETURN
  736. 61900 REM ****** CHECK FOR ASC0
  737. 61910 S4$ = INKEY$
  738. 61920 C2 =  ASC(S4$)
  739. 61930 IF C2 = 83 THEN C = 1
  740. 61940 IF C2 = 82 THEN C = 6
  741. 61950 IF C2 = 75 THEN C = 19
  742. 61960 IF C2 = 77 THEN C = 4 
  743. 61970 RETURN
  744. 62000 REM **********  ALPHANUMERIC CHECK  **************
  745. 62010 MAX = FL(A,Q)
  746. 62020 GOTO 62040
  747. 62030 REM ********  MAX SET IN PROGRAM  ********
  748. 62040 A$ = ""
  749. 62050 PRINT ">"; 
  750. 62060 FOR N9 = 1 TO MAX
  751. 62070 K$(N9) = ""
  752. 62080 PRINT "_";
  753. 62090 NEXT N9
  754. 62100 PRINT "<";
  755. 62110 T2 = MAX + 1
  756. 62120 FOR T4 = 1 TO T2
  757. 62130 PRINT CHR$(CH);
  758. 62140 NEXT T4
  759. 62150 KT = 0
  760. 62160 KTMAX = 1
  761. 62170 REM ***********  CHECK ALFANUMERIC INPUT FOR LENGTH  ***********
  762. 62180 KT = KT + 1
  763. 62190 PRINT TAB(KT+1)"";
  764. 62200 K$ = INKEY$
  765. 62210 IF K$ = "" GOTO 62200
  766. 62220 C = ASC(K$)
  767. 62230 IF C = 0 THEN GOSUB 61900
  768. 62240 IF C = 13 GOTO 62350
  769. 62250 IF C = 17 OR C = 8 GOTO 62920
  770. 62260 IF C = 19 GOTO 62450
  771. 62270 IF C = 4  GOTO 62500
  772. 62280 IF C = 6 GOTO 62560
  773. 62290 IF C = 1 GOTO 62730
  774. 62300 IF KT > MAX GOTO 62190
  775. 62310 K$(KT) = K$
  776. 62320 PRINT K$(KT);
  777. 62330 IF KT > KTMAX THEN KTMAX = KT
  778. 62340 GOTO 62180
  779. 62350 REM **********  RETURN  **********
  780. 62360 FOR T9 = 1 TO MAX
  781. 62370 A$ = A$ + K$(T9)
  782. 62420 NEXT T9
  783. 62430 PRINT "" 
  784. 62440 RETURN  
  785. 62450 REM ********* MOVE CURSE BACK ********
  786. 62460 IF KT = 1 GOTO 62190
  787. 62470 KT = KT - 1
  788. 62480 PRINT CHR$(CH);
  789. 62490 GOTO 62190
  790. 62500 REM ********* MOVE CURSER FORWARD *********
  791. 62510 IF KT >= MAX GOTO 62190
  792. 62520 IF KT >  KTMAX  GOTO 62190
  793. 62530 PRINT K$(KT);
  794. 62540 KT = KT + 1
  795. 62550 GOTO 62190
  796. 62560 REM ********** INSERT ***********
  797. 62570 X9 = MAX
  798. 62580 WHILE X9 > KT
  799. 62590 X9 = X9 - 1
  800. 62600 K$(X9 + 1) = K$(X9)
  801. 62610 WEND 
  802. 62620 K$(KT) = " "
  803. 62630 KTMAX = KTMAX + 1
  804. 62640 IF KTMAX > MAX THEN KTMAX = MAX
  805. 62650 FOR T9 = KT TO KTMAX
  806. 62660 PRINT K$(T9);
  807. 62670 NEXT T9
  808. 62680 T6 = (KTMAX - KT) +1
  809. 62690 FOR T7 = 1 TO T6
  810. 62700 PRINT CHR$(CH);
  811. 62710 NEXT T7
  812. 62720 GOTO 62190
  813. 62730 REM ********** DELETE ***********
  814. 62740 IF KT > KTMAX GOTO 62200
  815. 62750 IF KTMAX = 1 GOTO 62190
  816. 62760 K$(MAX + 1) = ""
  817. 62770 X9 = KT 
  818. 62780 WHILE X9 <= KTMAX
  819. 62790 K$(X9) = K$(X9 + 1)
  820. 62800 X9 = X9 + 1
  821. 62810 WEND 
  822. 62820 KTMAX = KTMAX - 1
  823. 62830 FOR T9 = KT TO KTMAX
  824. 62840 PRINT K$(T9);
  825. 62850 NEXT T9
  826. 62860 PRINT "_";
  827. 62870 T7 = (KTMAX - KT) + 2
  828. 62880 FOR T6 = 1 TO T7
  829. 62890 PRINT CHR$(CH);
  830. 62900 NEXT T6
  831. 62910 GOTO 62190
  832. 62920 REM ********* BACKSPACE ********
  833. 62930 IF KT = 1 GOTO 62190
  834. 62940 K$(KT) = " "
  835. 62950 KT = KT - 1
  836. 62960 K$(KT) = " "
  837. 62970 PRINT CHR$(CH);
  838. 62980 PRINT "_";
  839. 62990 PRINT CHR$(CH);
  840. 63000 GOTO 62190
  841.  " "
  842. 62950 KT = KT - 1
  843. 62960 K$(KT) = " "
  844. 62970 PRINT CHR$(CH);