ChipMaster's bwBASIC This also includes history going back to v2.10. *WARN* some binary files might have been corrupted by CRLF.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

200 lines
6.0 KiB

  1. 10 PRINT "PROGRAM FILE 109: STRING INPUT."
  2. 20 PRINT " ANSI STANDARD 3.2, 13.2, 13.4"
  3. 30 PRINT
  4. 40 PRINT "SECTION 109.1 INPUT OF QUOTED AND UNQUOTED STRINGS"
  5. 50 PRINT
  6. 60 PRINT "PLEASE ENTER YOUR INPUT-REPLIES EXACTLY AS REQUESTED"
  7. 70 PRINT "BY THE PROMPT, INCLUDING ALL SPACING, COMMAS AND OTHER"
  8. 80 PRINT "PUNCTUATION."
  9. 90 PRINT
  10. 100 PRINT " - EXCEPT - WHEREVER THE PROMPT CONTAINS AN EQUALS (=)"
  11. 110 PRINT "SUBSTITUTE A BLANK SPACE, AND WHEREVER THE PROMPT"
  12. 120 PRINT "CONTAINS A NUMBER-SIGN (#), SUBSTITUTE A QUOTE."
  13. 130 PRINT "THUS, THE PROMPT:"
  14. 140 PRINT " ==#ER#=="
  15. 150 PRINT "SHOULD CAUSE YOU TO STRIKE THE KEYS:"
  16. 160 PRINT " 1. SPACE"
  17. 170 PRINT " 2. SPACE"
  18. 180 PRINT " 3. QUOTE"
  19. 190 PRINT " 4. LETTER E"
  20. 200 PRINT " 5. LETTER R"
  21. 210 PRINT " 6. QUOTE"
  22. 220 PRINT " 7. SPACE"
  23. 230 PRINT " 8. SPACE"
  24. 240 PRINT
  25. 250 PRINT "THESE CONVENTIONS ARE NECESSARY BECAUSE THE QUOTE IS"
  26. 260 PRINT "UNPRINTABLE IN MINIMAL BASIC, AND SPACES ARE DIFFICULT"
  27. 270 PRINT "TO COUNT ON A TERMINAL."
  28. 280 PRINT
  29. 290 PRINT "PLEASE NOTE THAT THIS ROUTINE IS STRONGLY DEPENDENT"
  30. 300 PRINT "ON THE CORRECT OPERATION OF THE STRING COMPARISON"
  31. 310 PRINT "FEATURE. IF THAT FEATURE IS INCORRECT, THIS ROUTINE"
  32. 320 PRINT "WILL LIKELY GIVE INVALID RESULTS."
  33. 330 PRINT
  34. 340 PRINT "ALL THE REPLIES PROMPTED FOR ARE VALID, THEREFOR "
  35. 350 PRINT "IF THE PROCESSOR REJECTS ANY OF THEM, "
  36. 360 PRINT "*** TEST FAILED ***"
  37. 370 PRINT
  38. 380 PRINT "FOR USER CONVENIENCE, THE STRING TO BE ENTERED IS INDENTED"
  39. 390 PRINT "TWO SPACES, SO THAT IF THE INPUT-PROMPT OCCUPIES TWO"
  40. 400 PRINT "POSITIONS, AS RECOMMENDED, YOUR INPUT-REPLY WILL BE"
  41. 410 PRINT "ALIGNED WITH THE PROMPT STRING."
  42. 420 PRINT
  43. 430 PRINT " BEGIN TEST"
  44. 440 LET F=0
  45. 450 READ N,P$
  46. 460 LET Q$=""
  47. 470 IF N<100 THEN 500
  48. 480 LET N=N-100
  49. 490 READ Q$
  50. 500 IF N=0 THEN 1380
  51. 510 LET A$=""
  52. 520 LET B$=""
  53. 530 LET C$=""
  54. 540 LET D$=""
  55. 550 LET I$=""
  56. 560 LET J$=""
  57. 570 LET K$=""
  58. 580 LET L$=""
  59. 590 READ I$
  60. 600 IF N<=1 THEN 660
  61. 610 READ J$
  62. 620 IF N<=2 THEN 660
  63. 630 READ K$
  64. 640 IF N<=3 THEN 660
  65. 650 READ L$
  66. 660 PRINT
  67. 670 PRINT
  68. 680 PRINT "PLEASE ENTER:"
  69. 690 PRINT " ";P$;Q$
  70. 700 ON N GOTO 710,730,750,770
  71. 710 INPUT A$
  72. 720 GOTO 790
  73. 730 INPUT A$,B$
  74. 740 GOTO 790
  75. 750 INPUT A$,B$,C$
  76. 760 GOTO 790
  77. 770 INPUT A$,B$,C$,D$
  78. 780 GOTO 790
  79. 790 REM COMMON EXIT POINT
  80. 800 PRINT
  81. 810 PRINT "SHOULD BE: ***";I$;J$;K$;L$;"***"
  82. 820 PRINT "ACTUAL: ***";A$;B$;C$;D$;"***"
  83. 830 IF A$<>I$ THEN 890
  84. 840 IF B$<>J$ THEN 890
  85. 850 IF C$<>K$ THEN 890
  86. 860 IF D$<>L$ THEN 890
  87. 870 PRINT "TEST OK"
  88. 880 GOTO 450
  89. 890 PRINT "INPUT NOT EQUAL EXPECTED VALUE. RE-TRY (Y OR N)?"
  90. 900 INPUT T$
  91. 910 IF T$<>"N" THEN 660
  92. 920 PRINT "TEST FAILED."
  93. 930 LET F=F+1
  94. 940 GOTO 450
  95. 950 REM DATA ITEM FORMAT:
  96. 960 REM 1 - NUMBER OF VARIABLES (+100 IF LONG PROMPT)
  97. 970 REM 2 - PROMPT
  98. 980 REM 3 - CORRECT RESULT
  99. 990 REM OR
  100. 1000 REM 2,3 - LONG PROMPT
  101. 1010 REM 4 - CORRECT RESULT
  102. 1020 DATA 1,"ABC","ABC"
  103. 1030 DATA 1,"#ABC#","ABC"
  104. 1040 DATA 2,"ABC,DEF","ABC","DEF"
  105. 1050 DATA 2,"#ABC#,#DEF#","ABC","DEF"
  106. 1060 DATA 2,"#ABC#,DEF","ABC","DEF"
  107. 1070 DATA 2,"ABC,#DEF#","ABC","DEF"
  108. 1080 REM TEST ALL CHARACTERS LEGAL IN UNQUOTED STRING
  109. 1090 DATA 1,"ABCDEFGHIJKLM","ABCDEFGHIJKLM"
  110. 1100 DATA 1,"NOPQRSTUVWXYZ","NOPQRSTUVWXYZ"
  111. 1110 DATA 1,"+.=====-","+. -"
  112. 1120 DATA 1,"----5---10---15-18","----5---10---15-18"
  113. 1130 DATA 1,"===ABC","ABC"
  114. 1140 DATA 1,"ABC===","ABC"
  115. 1150 DATA 1,"===ABC===","ABC"
  116. 1160 DATA 1,"#===ABC#"," ABC"
  117. 1170 DATA 1,"#ABC===#","ABC "
  118. 1180 DATA 1,"#===ABC===#"," ABC "
  119. 1190 DATA 101,"===#===ABC","====#===="," ABC "
  120. 1200 DATA 103,"===ABC==,===#DEF#","===,==GHI==","ABC","DEF","GHI"
  121. 1210 DATA 3,"=1=,==2==,===3===","1","2","3"
  122. 1220 DATA 1,"A===B","A B"
  123. 1230 DATA 1,"===A===B===","A B"
  124. 1240 DATA 101,"===EIGHTEEN","=POSITIONS===","EIGHTEEN POSITIONS"
  125. 1250 DATA 103,"==A==B==,==C=","=D==,==E==F==","A B","C D","E F"
  126. 1260 DATA 103,"==A==B==,","==#D#==,==E==F==","A B","D","E F"
  127. 1270 DATA 3,"=#A#=,=B=C=,=#D#=","A","B C","D"
  128. 1280 DATA 103,"==#==A==B==#==,","=#=C=D=#=,=E=F="," A B "
  129. 1290 DATA " C D ","E F"
  130. 1300 DATA 4,"A,B,#C,D#,#E#","A","B","C,D","E"
  131. 1310 DATA 1,"##",""
  132. 1320 DATA 3,"A,##,B","A","","B"
  133. 1330 DATA 3,"==A==,==##==,==B==","A","","B"
  134. 1340 DATA 1,"AB+3-5.6B","AB+3-5.6B"
  135. 1350 DATA 1,"-1.23","-1.23"
  136. 1360 DATA 1,"+3-5=-8+6","+3-5 -8+6"
  137. 1370 DATA 0,"Q"
  138. 1380 PRINT
  139. 1390 PRINT
  140. 1400 IF F=0 THEN 1430
  141. 1410 PRINT "*** TEST FAILED: ";F;" CASE(S) HANDLED IMPROPERLY ***"
  142. 1420 GOTO 1440
  143. 1430 PRINT "*** TEST PASSED ***"
  144. 1440 PRINT
  145. 1450 PRINT " END TEST"
  146. 1460 PRINT
  147. 1470 PRINT "SECTION 109.2 TEST QUOTED-STRING-CHARACTERS"
  148. 1480 PRINT
  149. 1490 PRINT "THIS PART OF THE TEST IS INTENDED TO DETERMINE WHETHER"
  150. 1500 PRINT "QUOTED STRINGS ON INPUT CAN CONTAIN ANY OF THE LEGAL"
  151. 1510 PRINT "QUOTED STRING CHARACTERS."
  152. 1520 PRINT
  153. 1530 PRINT "PLEASE RESPOND TO THE PROMPT BY ENTERING THE REQUESTED"
  154. 1540 PRINT "CHARACTERS IMMEDIATELY PRECEDED AND FOLLOWED BY THE"
  155. 1550 PRINT "QUOTE CHARACTER. THUS THE PROMPT:"
  156. 1560 PRINT " ABC"
  157. 1570 PRINT "SHOULD CAUSE YOU TO STRIKE THE KEYS:"
  158. 1580 PRINT " 1. QUOTE"
  159. 1590 PRINT " 2. LETTER A"
  160. 1600 PRINT " 3. LETTER B"
  161. 1610 PRINT " 4. LETTER C"
  162. 1620 PRINT " 5. QUOTE"
  163. 1630 PRINT "THUS THE QUOTE TO BE ENTERED IS NOW IMPLICIT AND THE"
  164. 1640 PRINT "NUMBER SIGN (#) AND EQUALS SIGN (=) HAVE NO SPECIAL"
  165. 1650 PRINT "SIGNIFICANCE."
  166. 1660 PRINT
  167. 1670 PRINT " BEGIN TEST"
  168. 1680 LET F=0
  169. 1690 READ A$
  170. 1700 IF A$="Q" THEN 1900
  171. 1710 PRINT
  172. 1720 PRINT
  173. 1730 PRINT "PLEASE ENTER:"
  174. 1740 PRINT " ";A$
  175. 1750 INPUT B$
  176. 1760 PRINT "SHOULD BE: ***";A$;"***"
  177. 1770 PRINT "ACTUAL: ***";B$;"***"
  178. 1780 IF A$<>B$ THEN 1810
  179. 1790 PRINT "TEST OK"
  180. 1800 GOTO 1690
  181. 1810 PRINT "INPUT NOT EQUAL TO EXPECTED VALUE. RE-TRY (Y OR N)?"
  182. 1820 INPUT C$
  183. 1830 IF C$<>"N" THEN 1710
  184. 1840 PRINT "TEST FAILED"
  185. 1850 LET F=F+1
  186. 1860 GOTO 1690
  187. 1870 DATA "ABCDEFGHIJKLM","NOPQRSTUVWXYZ","0123456789"
  188. 1880 DATA "!#$%&'()*+,-","./:;<=>?^_","EMBEDDED SPACE"
  189. 1890 DATA "Q"
  190. 1900 PRINT
  191. 1910 IF F=0 THEN 1940
  192. 1920 PRINT "*** TEST FAILED. ";F;" CASE(S) HANDLED IMPROPERLY. ***"
  193. 1930 GOTO 1950
  194. 1940 PRINT "***** TEST PASSED *****"
  195. 1950 PRINT
  196. 1960 PRINT " END TEST"
  197. 1970 PRINT
  198. 1980 PRINT "END PROGRAM 109"
  199. 1990 END