home *** CD-ROM | disk | FTP | other *** search
/ Nibble Magazine / nib40b.dsk / SURVEY.MASTER.bas < prev    next >
BASIC Source File  |  2023-02-26  |  15KB  |  334 lines

  1. 10  REM   *************************   
  2. 20  REM   * SURVEY.MASTER         *
  3. 30  REM   * BY GARY KNOX          *
  4. 40  REM   * COPYRIGHT (C) 1991    * 
  5. 50  REM   * MINDCRAFT PUBL. CORP. *   
  6. 60  REM   * CONCORD, MA 01742     *  
  7. 70  REM   *************************
  8. 80 D$ =  CHR$(4):Q$ =  CHR$(34)
  9. 90  DIM Q(10),Q$(10,10),QQ(50),QQ$(50,10),R(50),R$(50,10)
  10. 100  DIM Z$(100),Z(10),CT$(10)
  11. 110  ONERR  GOTO 170
  12. 120  PRINT D$;"OPEN NAMES,L15"
  13. 130  PRINT D$;"READ NAMES,R0"
  14. 140  INPUT QS: IF QS = 0  THEN 210
  15. 150  FOR K = 1 TO QS: PRINT D$;"READ NAMES,R"K: INPUT CT$(K): NEXT K
  16. 160  GOTO 210
  17. 170 ER =  PEEK(222): IF ER < >5  THEN  PRINT " DISK ERROR NO. "ER". PROGRAM STOPPED."
  18. 180  PRINT D$;"CLOSE NAMES"
  19. 190  PRINT D$;"OPEN NAMES,L15"
  20. 200  PRINT D$;"WRITE NAMES,R0": PRINT 0
  21. 210  PRINT D$;"CLOSE NAMES"
  22. 220  REM  ** MENU ** 
  23. 230  GOSUB 250
  24. 240  GOTO 230
  25. 250  PRINT  CHR$(12) CHR$(21): TEXT : HOME : HTAB 13: PRINT "SURVEY MASTER": HTAB 13: PRINT "BY: GARY KNOX"
  26. 260  HTAB 5: PRINT "(C) 1991 MINDCRAFT PUBL. CORP."
  27. 270  POKE 216,0:HT = 2:SN = 5
  28. 280 SI$(1) = "1. CREATE A NEW QUESTIONNAIRE"
  29. 290 SI$(2) = "2. ENTER QUESTIONNAIRE RESULTS"
  30. 300 SI$(3) = "3. PRINT QUESTIONNAIRE RESULTS"
  31. 310 SI$(4) = "4. PRINT A COPY OF THE QUESTIONNAIRE"
  32. 320 SI$(5) = "5. END THE PROGRAM"
  33. 330 HL = 0
  34. 340 CS = 1
  35. 350  FOR X = 1 TO SN: IF X = CS  THEN  INVERSE 
  36. 360  VTAB HL +6 +X +X *(SN <10): HTAB HT: PRINT SI$(X): NORMAL 
  37. 370  NEXT X
  38. 380  VTAB 23: INVERSE : PRINT "ARROWS";: NORMAL : PRINT " TO SELECT ... ";: INVERSE : PRINT "RETURN";: NORMAL : PRINT " TO EXECUTE"
  39. 390  POKE  -16368,0
  40. 400 K =  PEEK( -16384): IF K <128  THEN 400
  41. 410  POKE  -16368,0:K = K -128: IF K < >8  AND K < >21  AND K < >10  AND K < >11  AND K < >13  THEN 400
  42. 420 OS = CS
  43. 430  IF K = 8  OR K = 11  THEN CS = CS -1:CS = CS *(CS >0) +SN *(CS = 0): GOSUB 590: GOTO 400
  44. 440  IF K = 21  OR K = 10  THEN CS = CS +1:CS = CS *(CS < = SN) +(CS = SN +1): GOSUB 590: GOTO 400
  45. 450  ON CS GOSUB 460,490,520,560,550: HOME : GOTO 250
  46. 460 CT$ = "": GOSUB 3050: GOSUB 3080
  47. 470  IF CT$ = ""  THEN 460
  48. 480  GOSUB 1260: RETURN 
  49. 490 CT$ = "": GOSUB 3050: GOSUB 3080
  50. 500  IF CT$ = "-"  THEN 490
  51. 510 CT$ = S$: GOSUB 1830: RETURN 
  52. 520 CT$ = "": GOSUB 3050: GOSUB 3080
  53. 530  IF CT$ = "-"  THEN 520
  54. 540 CT$ = S$: GOSUB 2400: RETURN 
  55. 550  GOSUB 3010: TEXT : HOME : END 
  56. 560 CT$ = "": GOSUB 3050: GOSUB 3080
  57. 570  IF CT$ = "-"  THEN 560
  58. 580 CT$ = S$: PRINT : GOSUB 840: RETURN 
  59. 590  VTAB HL +6 +OS +OS *(SN <10): HTAB HT: PRINT SI$(OS)
  60. 600  VTAB HL +6 +CS +CS *(SN <10): INVERSE : HTAB HT: PRINT SI$(CS): NORMAL : RETURN 
  61. 610  REM  ** INPUT ROUTINE **
  62. 620 S$ = "":AZ$ = "": HTAB 20: PRINT ""
  63. 630  IF L > = 38  THEN BE = 1:EN = 39: GOTO 650
  64. 640 BE =  INT((40 -L)/2) -1:EN = BE +L +1
  65. 650  VTAB VT: HTAB BE
  66. 660  PRINT  CHR$(91);: HTAB EN: PRINT  CHR$(93);
  67. 670 U = BE: VTAB VT: HTAB U +1
  68. 680  GET AZ$
  69. 690  IF  ASC(AZ$) = 27  THEN FL = 1: GOTO 820
  70. 700  IF  ASC(AZ$) = 21  THEN AZ$ = " ": GOTO 770
  71. 710  IF  ASC(AZ$) = 13  THEN 790
  72. 720  IF  ASC(AZ$) >96  AND  ASC(AZ$) <123  THEN AZ$ =  CHR$( ASC(AZ$) -32)
  73. 730  IF  ASC(AZ$) < >8  THEN 770
  74. 740  IF  POS(0) = BE  THEN 680
  75. 750  IF U = BE +1  THEN S$ = "": CALL  -1008: PRINT " ";: CALL  -1008: GOTO 670
  76. 760 S$ =  LEFT$(S$,U -BE -1): CALL  -1008: PRINT " ";:U = U -1: CALL  -1008: GOTO 680
  77. 770  IF U <EN -1  THEN U = U +1:S$ = S$ +AZ$: HTAB U: PRINT AZ$;
  78. 780  GOTO 680
  79. 790  VTAB 24: HTAB 12: PRINT "RETYPE..Y OR N?";: GET AZ$: IF AZ$ < >"Y"  AND AZ$ < >"N"  AND AZ$ < >"y"  AND AZ$ < >"n"  THEN  VTAB 24: HTAB 1: CALL  -868: GOTO 790
  80. 800  IF AZ$ = "Y"  OR AZ$ = "y"  THEN  VTAB 4: HTAB 1: CALL  -958: GOTO 490
  81. 810  VTAB 22: CALL  -958:AZ$ = ""
  82. 820  RETURN 
  83. 830  REM  ** QUESTIONNAIRE PRINT ROUTINE **
  84. 840  HOME : VTAB 10: PRINT "PRINTING A QUESTIONNAIRE"
  85. 850  GOSUB 1050
  86. 860  PRINT  CHR$(4)"PR#1": PRINT : POKE 36,23: PRINT "Q U E S T I O N N A I R E": PRINT : FOR K = 1 TO 80: PRINT "-";: NEXT K: PRINT : PRINT 
  87. 870  FOR K = 1 TO Q
  88. 880  PRINT K".";: POKE 36,5: PRINT "CHECK ONE OF THE FOLLOWING...": PRINT 
  89. 890  FOR J = 1 TO Q(K)  STEP 2: POKE 36,5: PRINT "----";: PRINT Q$(K,J);: POKE 36,42
  90. 900  IF J +1 < = Q(K)  THEN  PRINT "----"Q$(K,J +1)
  91. 910  PRINT : NEXT J
  92. 920  PRINT 
  93. 930  NEXT K
  94. 940 Q = Q +1
  95. 950  FOR K = 1 TO QU
  96. 960  PRINT Q". ";:Q = Q +1
  97. 970  FOR J = 1 TO QQ(K): POKE 36,5: PRINT QQ$(K,J): NEXT J: PRINT 
  98. 980  FOR J = 1 TO R(K)  STEP 2
  99. 990  POKE 36,5: PRINT "----"R$(K,J);: POKE 36,42
  100. 1000  IF J +1 < = R(K)  THEN  PRINT "----"R$(K,J +1)
  101. 1010  PRINT : NEXT J: PRINT : PRINT : NEXT K
  102. 1020  PRINT : FOR K = 1 TO 80: PRINT "-";: NEXT K: PRINT : PRINT : PRINT  CHR$(4)"PR#0"
  103. 1030  TEXT : HOME : RETURN 
  104. 1040  REM  ** INPUT CRITERIA, QUESTIONS, & RESPONSES FROM DISK **
  105. 1050  PRINT D$;"OPEN GS."CT$
  106. 1060  PRINT D$;"READ GS."CT$
  107. 1070 E = 0
  108. 1080  INPUT Q
  109. 1090  FOR K = 1 TO Q: INPUT Q(K)
  110. 1100  FOR J = 1 TO Q(K): INPUT Q$(K,J):E = E +1: NEXT J
  111. 1110  NEXT K
  112. 1120 ET = E
  113. 1130  PRINT D$;"CLOSE GS."CT$
  114. 1140  PRINT D$;"OPEN QU."CT$
  115. 1150  PRINT D$;"READ QU."CT$
  116. 1160  INPUT QU
  117. 1170  FOR K = 1 TO QU: INPUT QQ(K)
  118. 1180  FOR J = 1 TO QQ(K): INPUT QQ$(K,J): NEXT J
  119. 1190  INPUT R(K)
  120. 1200  FOR J = 1 TO R(K): INPUT R$(K,J): NEXT J
  121. 1210  NEXT K
  122. 1220  PRINT D$;"CLOSE QU."CT$
  123. 1230  RETURN 
  124. 1240  REM  ** CREATE THE QUESTIONNAIRE **
  125. 1250  IF A$ = "N"  THEN  RETURN 
  126. 1260  HOME : INVERSE : HTAB 11: PRINT "GROUPING ENTRY ROUTINE": NORMAL : POKE 34,2: VTAB 3
  127. 1270  PRINT "   YOU MUST FIRST ENTER THE GROUPING": PRINT "SYSTEM QUESTIONS WHICH YOU PLAN TO USE  FOR THE SURVEY."
  128. 1280  PRINT 
  129. 1290  PRINT "THIS SYSTEM MUST CLASSIFY THE PEOPLE,": PRINT "WHO ANSWER THE SURVEY QUESTIONS."
  130. 1300  PRINT "   FOR EXAMPLE, MALE OR FEMALE, AGE": PRINT "GROUPINGS, ETC.."
  131. 1310  PRINT "   THE GROUPING SYSTEM MAY BE USED AS": PRINT "CRITERIA FOR TABULATING THE RESULTS": PRINT "OF THE QUESTIONNAIRE."
  132. 1320  PRINT 
  133. 1330  PRINT "   THE PRINT ROUTINE WILL THEN BE ABLE": PRINT "TO SUMMARIZE HOW PEOPLE IN THESE": PRINT "GROUPS RESPONDED TO THE QUESTIONS."
  134. 1340  VTAB 22: PRINT "PRESS <RETURN> KEY TO GO ON....";: GET A$: PRINT : HOME 
  135. 1350  VTAB 10: PRINT "PREPARING FILE - PLEASE WAIT..."
  136. 1360  PRINT D$;"OPEN TOT."CT$
  137. 1370  PRINT D$;"WRITE TOT."CT$
  138. 1380  PRINT 0
  139. 1390  PRINT D$;"CLOSE TOT."CT$
  140. 1400 Q = 1
  141. 1410 Q(Q) = 0:FL = 0:VT = 7: HOME 
  142. 1420  VTAB 3: PRINT "ENTER A CHOICE FOR GROUPING "Q
  143. 1430  VTAB 5: PRINT "PRESS <ESC> KEY WHEN NO MORE CHOICES IN THIS GROUPING"
  144. 1440  IF Q(Q) - INT(Q(Q)/14) *14 = 0  THEN VT = 7: VTAB VT: CALL  -958
  145. 1450  VTAB VT:L = 38: GOSUB 620
  146. 1460  IF FL = 0  THEN VT = VT +1:Q(Q) = Q(Q) +1:Q$(Q,Q(Q)) = S$: GOTO 1440
  147. 1470  HOME : VTAB 10: PRINT "MORE CLASSIFICATION GROUPS? Y/N";: GET A$: PRINT : IF A$ < >"Y"  AND A$ < >"N"  AND A$ < >"y"  AND A$ < >"n"  THEN 1470
  148. 1480  IF A$ = "Y"  OR A$ = "y"  THEN Q = Q +1: GOTO 1410
  149. 1490  PRINT D$;"OPEN GS."CT$
  150. 1500  PRINT D$;"WRITE GS."CT$
  151. 1510  PRINT Q
  152. 1520  FOR K = 1 TO Q: PRINT Q(K)
  153. 1530  FOR J = 1 TO Q(K): PRINT Q$(K,J): NEXT J
  154. 1540  NEXT K
  155. 1550  PRINT D$;"CLOSE GS."CT$
  156. 1560  TEXT : HOME : INVERSE : HTAB 7: PRINT "QUESTION-RESPONSE ROUTINE": NORMAL : POKE 34,2: VTAB 3
  157. 1570 Q = 1
  158. 1580 Q(Q) = 0:FL = 0:VT = 7: HOME 
  159. 1590  VTAB 3: PRINT "PRESS <ESC> IF DONE WITH THE QUESTION"
  160. 1600  VTAB 5: PRINT "ENTER QUESTION "Q" (3 LINES MAXIMUM)"
  161. 1610  IF Q(Q)/3 =  INT(Q(Q)/3)  AND Q(Q) < >0  THEN 1640
  162. 1620  VTAB VT:L = 38: GOSUB 620
  163. 1630  IF FL = 0  THEN VT = VT +1:Q(Q) = Q(Q) +1:Q$(Q,Q(Q)) = S$: GOTO 1610
  164. 1640 R(Q) = 0:FL = 0:VT = 7: HOME 
  165. 1650  VTAB 3: PRINT "PRESS <ESC> IF DONE WITH RESPONSES"
  166. 1660  VTAB 5: PRINT "ENTER RESPONSES FOR QUESTION "Q
  167. 1670  IF R(Q) - INT(R(Q)/14) *14 = 0  AND R(Q) < >0  THEN VT = 7: HTAB 1: VTAB VT: CALL  -958: GOTO 1720
  168. 1680  VTAB VT:L = 25: GOSUB 620
  169. 1690  IF FL = 0  THEN VT = VT +1:R(Q) = R(Q) +1:R$(Q,R(Q)) = S$: GOTO 1680
  170. 1700  HOME : VTAB 10: PRINT "MORE QUESTIONS? Y/N";: GET A$: PRINT : IF A$ < >"Y"  AND A$ < >"N"  AND A$ < >"y"  AND A$ < >"n"  THEN 1700
  171. 1710  IF A$ = "Y"  OR A$ = "y"  THEN Q = Q +1: GOTO 1580
  172. 1720  PRINT D$;"OPEN QU."CT$
  173. 1730  PRINT D$;"WRITE QU."CT$
  174. 1740  PRINT Q
  175. 1750  FOR K = 1 TO Q: PRINT Q(K)
  176. 1760  FOR J = 1 TO Q(K): PRINT Q$(K,J): NEXT J
  177. 1770  PRINT R(K)
  178. 1780  FOR J = 1 TO R(K): PRINT R$(K,J): NEXT J
  179. 1790  NEXT K
  180. 1800  PRINT D$;"CLOSE QU."CT$
  181. 1810  TEXT : HOME : RETURN 
  182. 1820  REM  ** INPUT THE RESPONSES **
  183. 1830  HOME : INVERSE : HTAB 9: PRINT "ENTER DATA ROUTINE": NORMAL : POKE 34,2
  184. 1840  VTAB 10: PRINT "LOADING QUESTIONS.........."
  185. 1850  PRINT D$;"OPEN AN."CT$
  186. 1860  PRINT D$;"CLOSE AN."CT$
  187. 1870  GOSUB 1050: HOME 
  188. 1880  PRINT "PRESS <N> IF RESPONSE WASN'T MARKED"
  189. 1890  PRINT "PRESS <M> IF RESPONSE WAS MARKED"
  190. 1900  PRINT "PRESS <ESC> TO GO TO 1ST RESPONSE AGAIN"
  191. 1910 PP = 1
  192. 1920  POKE 34,6: VTAB 7:FL = 1:RE$ = "":T = 0
  193. 1930 KK = 0:L = 0
  194. 1940  HOME :KK = KK +1:L = L +1:J = 0: IF L >Q +QU  THEN 2230
  195. 1950  IF KK >Q  AND FL = 1  THEN FL = 2:KK = 1
  196. 1960  PRINT : HTAB 8: IF L >1  THEN  INVERSE : PRINT "RESPONSES FOR QUESTION "L -1: NORMAL 
  197. 1970  POKE 216,0:HT = 12:HL = 7
  198. 1980  PRINT : ON FL GOTO 1990,2020
  199. 1990 J = J +1: IF J >Q(KK)  THEN 2010
  200. 2000 SI$(J) = Q$(KK,J): GOTO 1990
  201. 2010 SN = Q(KK): GOTO 2050
  202. 2020 J = J +1: IF J >R(KK)  THEN 2040
  203. 2030 SI$(J) = R$(KK,J): GOTO 2020
  204. 2040 SN = R(KK)
  205. 2050 CS = 1
  206. 2060  FOR X = 1 TO SN: IF X = CS  THEN  INVERSE 
  207. 2070  VTAB HL +2 +X *(SN <10): HTAB HT: PRINT SI$(X): NORMAL 
  208. 2080  NEXT X
  209. 2090  POKE  -16368,0
  210. 2100 K =  PEEK( -16384): IF K <128  THEN 2100
  211. 2110  POKE  -16368,0:K = K -128: IF K < >78  AND K < >77  AND K < >27  THEN 2100
  212. 2120 OS = CS
  213. 2130  IF K = 77  THEN RE$ = RE$ +"1":CS = CS +1: GOSUB 2190: GOTO 2160
  214. 2140  IF K = 78  THEN RE$ = RE$ +"0":CS = CS +1: GOSUB 2190: GOTO 2160
  215. 2150  IF K = 27  THEN RE$ = "": GOTO 1970
  216. 2160  IF CS >Q(KK)  AND FL = 1  THEN 1940
  217. 2170  IF CS >R(KK)  AND FL = 2  THEN 1940
  218. 2180  GOTO 2090
  219. 2190  IF CS >Q(KK)  AND FL = 1  THEN  RETURN 
  220. 2200  IF CS >R(KK)  AND FL = 2  THEN  RETURN 
  221. 2210  VTAB HL +2 +OS *(SN <10): HTAB HT: PRINT SI$(OS)
  222. 2220  VTAB HL +2 +CS *(SN <10): INVERSE : HTAB HT: PRINT SI$(CS): NORMAL : RETURN 
  223. 2230  PRINT D$;"APPEND AN."CT$
  224. 2240  PRINT D$;"WRITE AN."CT$
  225. 2250  PRINT RE$
  226. 2260  PRINT D$;"CLOSE AN."CT$
  227. 2270  HOME : VTAB 10: PRINT "MORE QUESTIONNAIRES?  Y/N ";: GET A$: PRINT : IF A$ < >"Y"  AND A$ < >"N"  AND A$ < >"y"  AND A$ < >"n"  THEN 2270
  228. 2280  IF A$ = "Y"  OR A$ = "y"  THEN PP = PP +1: GOTO 1920
  229. 2290  PRINT D$;"OPEN TOT."CT$
  230. 2300  PRINT D$;"READ TOT."CT$
  231. 2310  INPUT TT
  232. 2320  PRINT D$;"CLOSE TOT."CT$
  233. 2330 TT = TT +PP
  234. 2340  PRINT D$;"OPEN TOT."CT$
  235. 2350  PRINT D$;"WRITE TOT."CT$
  236. 2360  PRINT TT
  237. 2370  PRINT D$;"CLOSE TOT."CT$
  238. 2380  TEXT : HOME : RETURN 
  239. 2390  REM  ** PRINT SURVEY RESULTS **
  240. 2400  HOME : INVERSE : HTAB 10: PRINT "PRINT RESULTS ROUTINE": POKE 34,3: NORMAL : VTAB 4
  241. 2410  VTAB 10: PRINT "LOADING RESULTS NOW........"
  242. 2420  GOSUB 1050
  243. 2430  HOME :C = 0:PE = 0:N = 0
  244. 2440  FOR K = 1 TO QU: FOR J = 1 TO R(K):T(K,J) = 0: NEXT J: NEXT K
  245. 2450  PRINT "YOU MUST SELECT THE GROUPING CRITERIA TOBE USED FOR TABULATING THE QUESTION": PRINT "RESPONSES."
  246. 2460  POKE 34,7
  247. 2470  FOR GT = 1 TO Q: VTAB 9
  248. 2480  INVERSE : HTAB 5: PRINT "GROUPING NUMBER "GT" OF "Q: VTAB 11: NORMAL 
  249. 2490  FOR KK = 1 TO Q(GT): HTAB 5: PRINT Q$(GT,KK)
  250. 2500  HTAB 1: VTAB 20: CALL  -868: INVERSE : PRINT "DO YOU WANT TO USE THIS CRITERIA? Y/N";: NORMAL : GET A$: IF A$ < >"Y"  AND A$ < >"N"  AND A$ < >"y"  AND A$ < >"n"  THEN 2500
  251. 2510 N = N +1
  252. 2520  IF A$ = "N"  OR A$ = "n"  THEN  VTAB 11: HTAB 5: CALL  -868: GOTO 2560
  253. 2530 C = C +1:Z(C) = N: HOME 
  254. 2540  IF KK = Q(GT)  THEN 2570
  255. 2550  FOR ZZ = KK +1 TO Q(GT):N = N +1: NEXT ZZ: GOTO 2570
  256. 2560  NEXT KK
  257. 2570  NEXT GT
  258. 2580  POKE 34,3: HOME 
  259. 2590  VTAB 10: PRINT "LOADING RESULTS........"
  260. 2600  PRINT D$;"OPEN TOT."CT$
  261. 2610  PRINT D$;"READ TOT."CT$
  262. 2620  INPUT TT
  263. 2630  PRINT D$;"CLOSE TOT."CT$
  264. 2640 PP = 0
  265. 2650 LL = PP +100: IF LL >TT  THEN LL = TT
  266. 2660  PRINT D$;"OPEN AN."CT$
  267. 2670  PRINT D$;"POSITION AN."CT$",R"PP
  268. 2680  PRINT D$;"READ AN."CT$
  269. 2690  FOR K = PP +1 TO LL: INPUT Z$(K): NEXT K
  270. 2700  PRINT D$;"CLOSE AN."CT$
  271. 2710  FOR KK = 1 TO LL
  272. 2720 E = ET
  273. 2730  IF C = 0  THEN 2770
  274. 2740  FOR J = 1 TO C
  275. 2750  IF  MID$ (Z$(KK),Z(J),1) = "0"  THEN 2810
  276. 2760  NEXT J
  277. 2770 PE = PE +1
  278. 2780  FOR K = 1 TO QU: FOR J = 1 TO R(K)
  279. 2790 E = E +1: IF  MID$ (Z$(KK),E,1) = "1"  THEN T(K,J) = T(K,J) +1
  280. 2800  NEXT J: NEXT K
  281. 2810  NEXT KK
  282. 2820  HOME : PRINT  CHR$(4)"PR#1": PRINT : POKE 36,30: PRINT "QUESTIONNAIRE SUMMARY"
  283. 2830  IF C = 0  THEN  PRINT : PRINT : GOTO 2920
  284. 2840  FOR JJ = 1 TO C
  285. 2850 ZZ = 0
  286. 2860  FOR K = 1 TO Q: FOR J = 1 TO Q(K):ZZ = ZZ +1: IF ZZ = Z(JJ)  THEN 2880
  287. 2870  NEXT J: NEXT K
  288. 2880  POKE 36,5: PRINT "CRITERIA--"JJ":"Q$(K,J)
  289. 2890  PRINT : PRINT 
  290. 2900  NEXT JJ
  291. 2910  IF PE = 0  THEN 2990
  292. 2920  FOR K = 1 TO QU: POKE 36,7: PRINT "QUESTION "K":";
  293. 2930  FOR J = 1 TO QQ(K): POKE 36,14: PRINT QQ$(K,J): NEXT J
  294. 2940  FOR J = 1 TO R(K): POKE 36,10: PRINT R$(K,J);: POKE 36,50: PRINT T(K,J)"/"PE"=" INT(T(K,J)/PE *100)"%"
  295. 2950  NEXT J: PRINT : PRINT : NEXT K
  296. 2960  PRINT  CHR$(4)"PR#0": HOME : VTAB 10: PRINT "MORE PRINTED RESULTS WITH DIFFERENT     CRITERIA? Y/N";: GET A$: IF A$ < >"Y"  AND A$ < >"N"  AND A$ < >"y"  AND A$ < >"n"  THEN 2960: REM  5 SPACES
  297. 2970  IF A$ = "Y"  OR A$ = "y"  THEN 2430
  298. 2980  GOTO 3000
  299. 2990  POKE 36,7: PRINT "NO RESPONSES WITH THIS CRITERIA.": PRINT : PRINT : PRINT  CHR$(4)"PR#0"
  300. 3000  TEXT : HOME : RETURN 
  301. 3010  VTAB 23: CALL  -958: PRINT "DO YOU REALLY WANT TO QUIT? Y/N";: GET YN$
  302. 3020  IF YN$ < >"Y"  AND YN$ < >"N"  AND YN$ < >"y"  AND YN$ < >"n"  THEN  PRINT : GOTO 3010
  303. 3030  IF YN$ = "Y"  OR YN$ = "y"  THEN  RETURN 
  304. 3040  POP : RETURN 
  305. 3050  HOME : HTAB 5: PRINT "ENTER THE NAME OF THE SURVEY."
  306. 3060 FL = 0:VT = 7: VTAB VT:L = 11: GOSUB 620: PRINT : IF FL = 1  THEN FL = 0: POP : RETURN 
  307. 3070  RETURN 
  308. 3080  IF QS = 0  THEN 3140
  309. 3090  FOR QQ = 1 TO QS
  310. 3100  IF S$ = CT$(QQ)  AND CS = 1  THEN 3300
  311. 3110  IF S$ = CT$(QQ)  AND CS < >1  THEN  RETURN 
  312. 3120  NEXT QQ
  313. 3130  IF CS < >1  THEN CT$ = "-": RETURN 
  314. 3140  IF  LEN(S$) = 0  THEN  RETURN 
  315. 3150 QS = QS +1:CT$(QS) = S$:CT$ = S$
  316. 3160  PRINT D$;"OPEN NAMES,L15"
  317. 3170  PRINT D$;"WRITE NAMES,R0": PRINT QS
  318. 3180  PRINT D$;"WRITE NAMES,R"QS: PRINT CT$(QS)
  319. 3190  PRINT D$;"CLOSE NAMES"
  320. 3200  ONERR  GOTO 3240
  321. 3210  PRINT D$"OPEN "S$: PRINT D$"CLOSE "S$
  322. 3220  PRINT D$"DELETE "S$
  323. 3230  RETURN 
  324. 3240  POKE 216,0: PRINT D$"OPEN NAMES,L15": PRINT D$"WRITE NAMES,R0": PRINT QS -1:QS = QS -1: PRINT D$"CLOSE"
  325. 3250  VTAB 12: CALL  -958: PRINT  CHR$(7)"'"S$"' IS AN INVALID NAME."
  326. 3260  VTAB 22: PRINT "PRESS [RETURN] TO ENTER A NEW NAME OR": PRINT "[ESC] TO RETURN TO THE MENU."
  327. 3270 X =  PEEK( -16384): IF X = 155  THEN  POKE  -16368,0: HOME : GOTO 250
  328. 3280  IF X = 141  THEN  POKE  -16368,0:CS = 1: GOTO 450
  329. 3290  GOTO 3270
  330. 3300  HOME : HTAB 16: INVERSE : PRINT "WARNING": NORMAL 
  331. 3310  VTAB 10: PRINT "THERE IS ALREADY A FILE - "CT$
  332. 3320  PRINT : PRINT "ON THE DISK!"
  333. 3330  VTAB 15: CALL  -868: PRINT "PRESS A KEY TO CONTINUE";: GET A$
  334. 3340  RETURN