3 REM FREQ: FREQUENCY BETWEEN BOUNDARIES 20 REM 30 REM BY TONY KOZLOWSKI 50 REM AUTOMATIC ELECT. LABS. NORTHLAKE ILL 60 REM DEC. 28, 1970 70 REM - CONVERTED FOR RSTS-11 BASIC BY DSAA 100 REM 110 REM VARIABLE NAMES-- 120 REM 130 REM "A" RAW DATA VALUES 140 REM "M" INTERVAL BOUNDRY POINTS 150 REM "R" NUMBER OF ROWS IN "A" 160 REM "C" NUMBER OF COLUMNS IN "A" 170 REM "E" INTERVAL WIDTHS CALCULATED FROM MAX IN MIN VALUES 180 REM "M1" AND "M2" MAX. AND MIN. DATA VALUES 190 REM "Q1" AND "Q2" FREQUENCY COUNTERS 200 REM 205 OPEN 'JUNK.DAT' AS FILE 1%:DIM #1%,Q9(50,50) 210 DIM M(201) 220 DIM A (150,5) 230 DIM T$(3) 240 DIM D$( 3) 250 I9=0 260 REM PRINT TITLE 270 PRINT "FREQUENCY BETWEEN BOUNDARIES" 280 PRINT 290 GOTO 380 300 REM AFTER THE FIRST RUN, ASK ABOUT USING THE SAME DATA AGAIN 310 PRINT 320 PRINT "DO YOU WISH TO UTILIZE THE SAME DATA MATRIX" 330 PRINT "(YES OR NO)" 340 INPUT T$ 350 IF T$="YES" THEN 800 360 GOTO 440 370 REM PRINT HEADING INFORMATION 380 PRINT 390 PRINT "THIS PROGRAM FINDS THE NUMBER OF DATA POINTS FALLING" 400 PRINT 'BETWEEN GIVEN BOUNDRIES. INPUT OF UP TO 150 VALUES' 410 PRINT "OF EACH OF UP TO 5 VARIABLES FROM A DATA FILE OR" 420 PRINT "THE TERMINAL. THE DATA MAY BE SORTED INTO UP TO 200" 430 PRINT "INTERVALS." 440 PRINT 450 REM ASK ABOUT INPUT FROM A DATA FILE 460 PRINT 'DATA MAY BE ENTERED FROM A VIRTUAL ARRAY NAMED' 470 PRINT 'JUNK.DAT WHICH IS DIMENSIONED AS Q9(50,50)' 480 PRINT 'THIS ARRAY MUST HAVE ALRADY BEEN CREATED IF YOU WISH' 481 PRINT 'TO INPUT FROM IT. DO YOU WISH TO USE A VIRTUAL ARRAY' 490 INPUT D$ 500 GOTO 550 510 REM PRINT ERROR MESSAGE IF NO. OF ROWS OR COL. IS INCORRECT 520 PRINT 530 PRINT "ERROR 01--MAX. NO OF ROWS IS 150 AND MAX. NO OF COL" 540 PRINT " IS 5" 550 PRINT 560 PRINT "ENTER NUMBER OF ROWS AND COLUMNS IN YOUR DATA SET"; 570 INPUT R,C 580 REM CHECK FOR NO. OR ROWS OR COL. OUT OF BOUNDS 590 IF R>150 THEN 520 600 IF C>5 THEN 520 610 IF D$="YES" THEN 820 620 REM INPUT DATA FROM TERMINAL, IF REQUIRED 630 PRINT 640 PRINT "ENTER DATA ONE ELEMENT AT A TIME" 650 PRINT "ENTER ALL DATA FROM ONE ROW IN THE ORDER OF THE COLUMNS" 660 PRINT 'STARTING WITH COLUMN ONE (1)' 670 FOR Z1=1 TO R 680 PRINT 690 PRINT "ROW ";Z1 700 PRINT 710 FOR Z2=1 TO C 720 INPUT Z3 730 LET A(Z1,Z2)=Z3 740 NEXT Z2 750 NEXT Z1 760 GOTO 800 770 REM PRINT ERROR MESSAGE IF ANALYSIS IS TO BE ON INVALID VARIABLE 780 PRINT 790 PRINT "ERROR 02--DATA HAS ";C;" VARIABLES" 800 PRINT 810 REM ASK WHICH VARIABLE ON WHICH TO WORK 820 PRINT "WHICH VARIABLE DO YOU WISH TO WORK WITH"; 830 INPUT X 840 IF X>C THEN 780 850 PRINT 860 IF D$="NO" THEN 980 870 REM ZERO OUT DATA MATRIX 880 MAT A=ZER 890 REM OPEN DATA FILE 900 REM GET DATA FROM FILE 910 FOR Z1=1 TO R 920 FOR Z2=1 TO C 930 Z3=Q9(Z1,Z2) 940 LET A(Z1,Z2)=Z3 950 NEXT Z2 960 NEXT Z1 970 REM FIND MAX AND MIN DATA VALUES 980 M1=A(1,X) 990 M2=A(1,X) 1000 FOR B=2 TO R 1010 IF A(B,X)M2 THEN 1050 1040 M2=A(B,X) 1050 NEXT B 1060 REM PRINT MAX. AND MIN. DATA VALUES 1070 PRINT "MAX. AND MIN. VALUES FOR VARIABLE";X 1080 PRINT " ARE ",M1," AMD ",M2 1090 PRINT 1100 REM ASK ABOUT ENTRY OF DIFFERENT MAX. AND MIN. VALUES 1110 PRINT "DO YOU WISH TO SPECIFY DIFFERENT MAX. AND MIN." 1120 PRINT "VALUES. (YES OR NO)" 1130 INPUT T$ 1140 PRINT 1150 IF T$="NO" THEN 1250 1160 PRINT "ENTER NEW MAXIMUM AND MINIMUM VALUES" 1170 INPUT M1,M2 1180 GOTO 1250 1190 PRINT 1200 REM PRINT ERROR MESSAGE IF NO. OF INTERVALS IS EXCESSIVE 1210 PRINT "ERROR 03--THE MAX. NO. OF INTERVALS IS 200" 1220 PRINT 1230 GOTO 1370 1240 REM CHECK TO SEE IF OPTION INFO. IS TO BE LISTED, LIST AS NEEDED 1250 IF I9=1 THEN 1350 1260 PRINT "THREE INTERVAL OPTIONS ARE AVAILABLE, THEY ARE:" 1270 PRINT 1280 PRINT " 1 SPECIFY THE NUMBER OF INTERVALS" 1290 PRINT " (PROGRAM WILL CALCULATE END-POINTS)" 1300 PRINT " 2 SPECIFY THE END-POINTS OF EACH INTERVAL" 1310 PRINT " (OTHER THAN THE MAX. AND MIN.)" 1320 PRINT " 3 SPECIFY THE WIDTHS OF THE INTERVALS" 1330 PRINT 1340 REM ASK FOR INTERVAL OPTION 1350 PRINT "ENTER INTERVAL OPTION" 1360 INPUT Z1 1370 PRINT 1380 REM ASK FOR NUMBER OF INTERVALS 1390 PRINT "ENTER THE NUMBER OF INTERVALS (200 MAX.)" 1400 INPUT I 1410 IF I>200 THEN 1190 1420 PRINT 1430 K=I+1 1435 IF Z1=1 THEN 1450 1440 ON Z1-1 GOTO 1530,1740 1450 REM CALCULATE INTERVAL WIDTH 1460 E=(M1-M2)/I 1470 FOR J=1 TO K 1480 M(J)=M2+(E*(J-1)) 1490 NEXT J 1500 M(K)=M1 1510 GOTO 1890 1520 REM ASK FOR ENTRY OF BOUNDRY POINTS 1530 PRINT 1540 PRINT "ENTER BOUNDRIES ONE AT A TIME-EXCLUDE MAX. AND MIN." 1550 PRINT "ALL BOUNDRIES MUST FALL WITHIN THE RANGE OF MAX AND MIN" 1560 PRINT "START AT THE LOW END OF THE RANGE" 1570 FOR N=2 TO I 1580 INPUT F 1590 REM CHECK FOR PROPER BOUNDRIES 1600 IF F <= M2 THEN 1620 1610 IF FM(N-1) THEN 1690 1660 PRINT "ERROR 06--LAST ENTRY HAS LOWER VALUE THAN ONE BEFORE" 1670 PRINT " ENTER VALUE AGAIN" 1680 GOTO 1580 1690 M(N)=F 1700 NEXT N 1710 M(1)=M2 1720 M(K)=M1 1730 GOTO 1890 1740 PRINT 1750 REM ASK FOR INTERVAL WIDTHS 1760 PRINT "ENTER INTERVAL WIDTHS (ONE AT A TIME)" 1770 PRINT "START AT THE LOW END OF THE RANGE" 1780 M(1)=M2 1790 FOR N=2 TO K 1800 INPUT F 1810 REM CHECK FOR VALID WIDTH 1820 IF F>0 THEN 1860 1830 PRINT "ERROR 04--LAST ENTERED WIDTH ZERO (0) OR UNDER" 1840 PRINT " ENTER VALUE AGAIN" 1850 GOTO 1800 1860 M(N)=M(N-1)+F 1870 NEXT N 1880 REM PRINT HEADING 1890 PRINT 1900 PRINT 1910 PRINT "INTERVAL FOR THE REGION THE FREQUENCY IS" 1920 REM SORT DATA INTO INTERVALS 1930 Q2=0 1940 FOR T=1 TO I 1950 Q1=0 1960 FOR U=1 TO R 1970 IF A(U,X) M(T+1) THEN 2030 2000 IF M(T+1)=M(K) THEN 2020 2010 GOTO 2030 2020 Q1=Q1+1 2030 NEXT U 2040 REM PRINT RESULTS 2050 Q2=Q2+Q1 2060 PRINT 2070 PRINT T,M(T),M(T+1),Q1 2080 NEXT T 2090 PRINT 2100 REM LIST TOTAL NUMBER OF POINTS CLASSIFIED 2110 PRINT "THE TOTAL NO. OF POINTS CLASSIFIED IS ",Q2 2120 PRINT 2121 PRINT 2130 PRINT 2140 PRINT 2150 REM CHECK TO SEE IF MORE WORK IS TO BE DONE 2160 PRINT "DO YOU WISH TO DO MORE CLASIFYING (YES OR NO)" 2170 INPUT T$ 2180 IF T$="NO" THEN 2270 2190 PRINT 2200 REM ZERO OUT BOUNDRY MATRIX 2210 FOR X=1 TO 201 2220 LET M(X)=0 2230 NEXT X 2240 I9=1 2250 GOTO 310 2260 REM END RUN 2270 PRINT 2280 PRINT "**END OF RUN**" 2290 PRINT 2300 CLOSE 1%:END