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.
 
 
 
 
 
 

100 lines
2.4 KiB

  1. 10 PRINT "PROGRAM FILE 49: NESTED FOR-BLOCKS."
  2. 20 PRINT " ANSI STANDARD 11.2, 11.4"
  3. 30 PRINT
  4. 40 PRINT "SECTION 49.1: NESTED FOR-BLOCKS."
  5. 50 PRINT
  6. 60 PRINT "THIS SECTION TESTS THAT FOR-BLOCKS MAY BE NESTED IN THE"
  7. 70 PRINT "TEXT OF THE PROGRAM, WITH SEPARATE CONTROL MAINTAINED"
  8. 80 PRINT "FOR EACH CONTROL-VARIABLE."
  9. 90 PRINT
  10. 100 LET S1=0
  11. 110 PRINT " BEGIN TEST."
  12. 120 LET T2=204
  13. 130 LET E$="ENTERING FOR-BLOCK"
  14. 140 LET F$="EXITING FOR-BLOCK"
  15. 150 PRINT
  16. 160 PRINT "EACH DETAIL LINE REPORTS:"
  17. 170 PRINT " 1) DEPTH OF NESTING"
  18. 180 PRINT " 2) CORRECT VALUE FOR CONTROL VARIABLE"
  19. 190 PRINT " 3) ACTUAL VALUE OF CONTROL VARIABLE"
  20. 200 PRINT " 4) RESULT (OK OR FAILED)"
  21. 210 PRINT
  22. 220 PRINT "DETAIL LINES ARE INDENTED TO SHOW DEPTH OF NESTING."
  23. 230 PRINT
  24. 240 LET T1=0
  25. 250 LET I2=12
  26. 260 PRINT E$;" 1"
  27. 270 FOR I1=12 TO 0 STEP -1
  28. 280 LET T1=T1+1
  29. 290 LET J2=-1
  30. 300 PRINT E$;" 2"
  31. 310 FOR J1=-1 TO 0
  32. 320 LET T1=T1+1
  33. 330 GOSUB 1070
  34. 340 LET J2=J2+1
  35. 350 NEXT J1
  36. 360 PRINT F$;" 2"
  37. 370 GOSUB 1070
  38. 380 LET K2=1
  39. 390 PRINT E$;" 3"
  40. 400 FOR K1=1 TO 3
  41. 410 LET T1=T1+1
  42. 420 LET J2=I2
  43. 430 PRINT E$;" 4"
  44. 440 FOR J1=I1 TO 1 STEP -2
  45. 450 LET T1=T1+1
  46. 460 GOSUB 1070
  47. 470 LET J2=J2-2
  48. 480 NEXT J1
  49. 490 PRINT F$;" 4"
  50. 500 GOSUB 1070
  51. 510 GOSUB 1140
  52. 520 LET K2=K2+1
  53. 530 NEXT K1
  54. 540 PRINT F$;" 3"
  55. 550 GOSUB 1140
  56. 560 GOSUB 1000
  57. 570 LET I2=I2-1
  58. 580 NEXT I1
  59. 590 PRINT F$;" 1"
  60. 600 GOSUB 1000
  61. 610 LET M$=" OK "
  62. 620 IF T1=T2 THEN 650
  63. 630 LET M$="FAILED"
  64. 640 LET S1=1
  65. 650 PRINT
  66. 660 PRINT "NO. TIMES THROUGH LOOPS:"
  67. 670 PRINT "SHOULD BE: ";T2;" ACTUAL: ";T1;" RESULT: ";M$
  68. 680 PRINT
  69. 690 IF S1=0 THEN 720
  70. 700 PRINT "*** TEST FAILED ***"
  71. 710 GOTO 730
  72. 720 PRINT "*** TEST PASSED ***"
  73. 730 PRINT
  74. 740 PRINT " END TEST."
  75. 750 PRINT
  76. 760 PRINT "END PROGRAM 49"
  77. 770 STOP
  78. 1000 REM SUBROUTINE TO CHECK THAT I1=I2
  79. 1010 LET M$=" OK "
  80. 1020 IF I1=I2 THEN 1050
  81. 1030 LET M$="FAILED"
  82. 1040 LET S1=1
  83. 1050 PRINT 1;TAB(10);I2;TAB(20);I1;TAB(30);M$
  84. 1060 RETURN
  85. 1070 REM SUBROUTINE TO CHECK THAT J1=J2
  86. 1080 LET M$=" OK "
  87. 1090 IF J1=J2 THEN 1120
  88. 1100 LET M$="FAILED"
  89. 1110 LET S1=1
  90. 1120 PRINT TAB(2);2;TAB(12);J2;TAB(22);J1;TAB(32);M$
  91. 1130 RETURN
  92. 1140 REM SUBROUTINE TO CHECK THAT K1=K2
  93. 1150 LET M$=" OK "
  94. 1160 IF K1=K2 THEN 1190
  95. 1170 LET M$="FAILED"
  96. 1180 LET S1=1
  97. 1190 PRINT TAB(4);3;TAB(14);K2;TAB(24);K1;TAB(34);M$
  98. 1200 RETURN
  99. 1210 END