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.
 
 
 
 
 
 

233 lines
5.7 KiB

  1. 10 PRINT "PROGRAM FILE 206: ERROR - ORDERING RELATIONS BETWEEN STRINGS."
  2. 20 PRINT " ANSI STANDARD 3.2, 3.4, 3.6, 10.2"
  3. 30 PRINT
  4. 40 PRINT "THIS PROGRAM TESTS WHETHER, AS AN ENHANCEMENT, THE COMPARISON"
  5. 50 PRINT "OF STRINGS WITH THE '<' AND '>' RELATIONS IS ALLOWED."
  6. 60 PRINT
  7. 70 PRINT "THIS IS A TEST FOR A NON-STANDARD FEATURE OF MINIMAL BASIC."
  8. 80 PRINT "TO PASS THIS TEST, THE PROCESSOR MUST EITHER:"
  9. 90 PRINT
  10. 100 PRINT " 1) ACCEPT THE PROGRAM AND BE ACCOMPANIED BY DOCUMENTATION"
  11. 110 PRINT " ACCURATELY DESCRIBING THE FEATURE'S INTERPRETATION"
  12. 120 PRINT " BY THE PROCESSOR, OR"
  13. 130 PRINT
  14. 140 PRINT " 2) REJECT THE PROGRAM WITH AN APPROPRIATE ERROR MESSAGE"
  15. 150 PRINT
  16. 160 PRINT "SEE THE NBS MINIMAL BASIC TEST PROGRAMS USER'S MANUAL"
  17. 170 PRINT "FOR DETAILED CRITERIA."
  18. 180 PRINT
  19. 190 PRINT "SECTION 206.1: COLLATING SEQUENCE."
  20. 200 PRINT
  21. 210 PRINT "IF THIS IMPLEMENTATION ALLOWS THE ORDERING RELATIONS,"
  22. 220 PRINT "AN INFORMATIVE SORT IS DONE TO DISPLAY THE IMPLICIT"
  23. 230 PRINT "COLLATING SEQUENCE OF THE CHARACTERS (ASSUMING THE NATURAL"
  24. 240 PRINT "INTERPRETATION IS GIVEN TO THESE RELATIONS)."
  25. 250 PRINT
  26. 260 PRINT " BEGIN TEST."
  27. 270 PRINT
  28. 280 PRINT "COLLATING SEQUENCE OF SELECTED CHARACTERS IS:"
  29. 290 PRINT "(CHARACTERS SURROUNDED BY PERIODS)"
  30. 300 PRINT
  31. 310 REM SORT 30 CHARACTERS, 15 AT A TIME BECAUSE OF NAME SPACE LIMITS
  32. 320 LET L=15
  33. 330 READ W$
  34. 340 REM THROUGHOUT, VARIABLES A$ - O$ ARE TREATED AS A STRING ARRAY,
  35. 350 REM INDEXED BY N, 1 <= N <= 15.
  36. 360 LET A$=W$
  37. 370 REM Z$ IS HIGHEST SO FAR, H1 ITS INDEX
  38. 380 LET Z$=W$
  39. 390 LET H1=1
  40. 400 REM LOAD IN 1ST L, AND NOTE HIGHEST
  41. 410 FOR N=2 TO L
  42. 420 READ W$
  43. 430 GOSUB 4000
  44. 440 IF W$ < Z$ THEN 470
  45. 450 LET Z$=W$
  46. 460 LET H1=N
  47. 470 NEXT N
  48. 480 REM READ NEXT L CHARACTERS, FOR EACH, COMPARE TO HIGHEST IN TABLE.
  49. 490 REM IF THIS ONE < HIGHEST, REPLACE HIGHEST WITH IT, AND THEN
  50. 500 REM FIND NEW HIGHEST.
  51. 510 FOR I=1 TO L
  52. 520 READ W$
  53. 530 REM IF THIS > HIGHEST, SKIP
  54. 540 IF W$ > Z$ THEN 660
  55. 550 LET N=H1
  56. 560 GOSUB 4000
  57. 570 LET H1=1
  58. 580 LET Z$ =A$
  59. 590 REM SCAN FOR NEW HIGHEST
  60. 600 FOR N=2 TO L
  61. 610 GOSUB 3000
  62. 620 IF W$<Z$ THEN 650
  63. 630 LET Z$=W$
  64. 640 LET H1=N
  65. 650 NEXT N
  66. 660 NEXT I
  67. 670 REM TABLE NOW HAS LOWEST L CHARACTERS; DO SORT ON THOSE
  68. 680 GOSUB 2000
  69. 690 RESTORE
  70. 700 LET N=1
  71. 710 REM READ ALL L+L. PUT INTO TABLE ONLY THOSE > HIGHEST OF THE
  72. 720 REM LOWEST L CHARACTERS ALREADY SORTED.
  73. 730 FOR I=1 TO L+L
  74. 740 READ W$
  75. 750 IF W$ > Z$ THEN 770
  76. 760 GOTO 790
  77. 770 GOSUB 4000
  78. 780 LET N=N+1
  79. 790 NEXT I
  80. 800 REM SORT THE HIGH L CHARACTERS.
  81. 810 GOSUB 2000
  82. 812 PRINT
  83. 815 PRINT "IF DOCUMENTATION AGREES WITH THE ABOVE RESULTS, THEN"
  84. 818 PRINT "*** TEST PASSED ***"
  85. 820 PRINT
  86. 830 PRINT " END TEST."
  87. 840 PRINT
  88. 850 PRINT "SECTION 206.2: COLLATING MULTI-CHARACTER STRINGS."
  89. 860 PRINT
  90. 870 PRINT "THIS SECTION DISPLAYS SOME SUGGESTIVE TEST CASES TO"
  91. 880 PRINT "SHOW HOW THIS IMPLEMENTATION HANDLES COMPARISONS OF"
  92. 890 PRINT "MULTI-CHARACTER STRINGS. ALL STRINGS SHOWN ARE DELIMITED"
  93. 895 PRINT "BY APOSTROPHES TO ENABLE THE USER TO DISTINGUISH BLANKS"
  94. 897 PRINT "FROM NULL."
  95. 900 PRINT
  96. 903 PRINT " BEGIN TEST."
  97. 906 PRINT
  98. 910 READ A$,B$
  99. 920 IF A$ = "999" THEN 1110
  100. 930 LET C$ = "="
  101. 940 IF A$=B$ THEN 1000
  102. 950 LET C$=","
  103. 960 IF A$<B$ THEN 1000
  104. 970 LET C$=">"
  105. 980 IF A$>B$ THEN 1000
  106. 990 LET C$="INCOMPARABLE TO"
  107. 1000 PRINT "'";A$;"' ";C$;" '";B$;"'"
  108. 1010 GOTO 910
  109. 1110 PRINT
  110. 1120 PRINT "IF DOCUMENTATION AGREES WITH ABOVE RESULTS, THEN"
  111. 1130 PRINT "*** TEST PASSED ***"
  112. 1140 PRINT
  113. 1150 PRINT " END TEST."
  114. 1160 PRINT
  115. 1900 PRINT "END PROGRAM 206"
  116. 1990 STOP
  117. 2000 REM THIS SUBROUTINE SORTS AND PRINTS THE CHARACTERS IN A$ - O$
  118. 2010 REM ALGORITHM IS SIMPLE EXCHANGE SORT
  119. 2020 FOR I=1 TO L-1
  120. 2030 FOR J=I+1 TO L
  121. 2040 LET N=I
  122. 2050 GOSUB 3000
  123. 2060 LET X$=W$
  124. 2070 LET N=J
  125. 2080 GOSUB 3000
  126. 2090 LET Y$=W$
  127. 2100 IF X$ < Y$ THEN 2180
  128. 2110 REM SWAP ITH AND JTH CHARACTERS
  129. 2120 LET N=I
  130. 2130 LET W$=Y$
  131. 2140 GOSUB 4000
  132. 2150 LET N=J
  133. 2160 LET W$=X$
  134. 2170 GOSUB 4000
  135. 2180 NEXT J
  136. 2190 NEXT I
  137. 2200 PRINT ".";
  138. 2210 FOR N=1 TO L
  139. 2220 GOSUB 3000
  140. 2230 PRINT W$;".";
  141. 2240 NEXT N
  142. 2250 PRINT
  143. 2260 RETURN
  144. 3000 REM SUBROUTINE TO GET NTH CHARACTER INTO W$
  145. 3010 IF N > 7 THEN 3030
  146. 3020 ON N GOTO 3040,3060,3080,3100,3120,3140,3160
  147. 3030 ON N-7 GOTO 3180,3200,3220,3240,3260,3280,3300,3320
  148. 3040 LET W$=A$
  149. 3050 GOTO 3340
  150. 3060 LET W$=B$
  151. 3070 GOTO 3340
  152. 3080 LET W$=C$
  153. 3090 GOTO 3340
  154. 3100 LET W$=D$
  155. 3110 GOTO 3340
  156. 3120 LET W$=E$
  157. 3130 GOTO 3340
  158. 3140 LET W$=F$
  159. 3150 GOTO 3340
  160. 3160 LET W$=G$
  161. 3170 GOTO 3340
  162. 3180 LET W$=H$
  163. 3190 GOTO 3340
  164. 3200 LET W$=I$
  165. 3210 GOTO 3340
  166. 3220 LET W$=J$
  167. 3230 GOTO 3340
  168. 3240 LET W$=K$
  169. 3250 GOTO 3340
  170. 3260 LET W$=L$
  171. 3270 GOTO 3340
  172. 3280 LET W$=M$
  173. 3290 GOTO 3340
  174. 3300 LET W$=N$
  175. 3310 GOTO 3340
  176. 3320 LET W$=O$
  177. 3340 RETURN
  178. 4000 REM SUBROUTINE TO GET W$ INTO NTH CHARACTER
  179. 4010 IF N > 7 THEN 4030
  180. 4020 ON N GOTO 4040,4060,4080,4100,4120,4140,4160
  181. 4030 ON N-7 GOTO 4180,4200,4220,4240,4260,4280,4300,4320
  182. 4040 LET A$=W$
  183. 4050 GOTO 4340
  184. 4060 LET B$=W$
  185. 4070 GOTO 4340
  186. 4080 LET C$=W$
  187. 4090 GOTO 4340
  188. 4100 LET D$=W$
  189. 4110 GOTO 4340
  190. 4120 LET E$=W$
  191. 4130 GOTO 4340
  192. 4140 LET F$=W$
  193. 4150 GOTO 4340
  194. 4160 LET G$=W$
  195. 4170 GOTO 4340
  196. 4180 LET H$=W$
  197. 4190 GOTO 4340
  198. 4200 LET I$=W$
  199. 4210 GOTO 4340
  200. 4220 LET J$=W$
  201. 4230 GOTO 4340
  202. 4240 LET K$=W$
  203. 4250 GOTO 4340
  204. 4260 LET L$=W$
  205. 4270 GOTO 4340
  206. 4280 LET M$=W$
  207. 4290 GOTO 4340
  208. 4300 LET N$=W$
  209. 4310 GOTO 4340
  210. 4320 LET O$=W$
  211. 4340 RETURN
  212. 5000 DATA "A","M","Z","O","1","8"
  213. 5010 DATA "9"," ","!","#","$","%"
  214. 5020 DATA "&","'","(",")","*","+"
  215. 5030 DATA ",","-",".","/",":",";"
  216. 5040 DATA "<","=",">","?","^","_"
  217. 6000 DATA "ABC","ABC"
  218. 6005 DATA "ABC","ABD"
  219. 6010 DATA "ABC","XYZ"
  220. 6020 DATA "ABC","ABC "
  221. 6030 DATA "ABC"," ABC"
  222. 6040 DATA "ABC "," ABC"
  223. 6050 DATA "ABC","ABCD"
  224. 6060 DATA "ABC"," "
  225. 6070 DATA "ABC",""
  226. 6080 DATA ""," "
  227. 6090 DATA " "," "
  228. 6100 DATA " ABC"," "
  229. 6110 DATA " ABC"," "
  230. 6120 DATA " ABC"," "
  231. 7000 DATA "999","999"
  232. 8000 END