1  FILES *
3  REM FREQ1, HP 36864A, 6/74
5  DIM B$[6]
10  PRINT "FAST FREQUENCY DISTRIBUTIONS FOR TEST SCORES"
15  PRINT 
20  PRINT "DO YOU WANT INSTRUCTIONS(1=YES,0=NO)";
25  INPUT A
30  IF A=0 THEN 90
35  PRINT 
40  PRINT "THIS PROGRAM CAN TAKE UP TO 900 SCORES."
45  PRINT "FRACTIONS ARE ROUNDED TO THE NEAREST WHOLE NUMBER."
50  PRINT "NEGATIVE NUMBERS ARE ALLOWED.  THE HIGHEST MINUS THE"
55  PRINT "LOWEST (RANGE OF THE DATA) CANNOT EXCEED 800."
60  PRINT 
65  PRINT "ENTER DATA STARTING ON LINE 1000, SEPARATE SCORES WITH COMMAS."
70  PRINT "WHEN FINISHED, TYPE RUN."
75  PRINT "THIS PROGRAM HAS AN OPTION TO USE DATA FILE INPUT"
80  PRINT "INSTEAD OF DATA STATEMENTS."
85  STOP 
90  S=S2=0
95  DIM X[900],Y[800],F[800]
100  PRINT 
105  PRINT "NUMBER OF SCORES";
110  INPUT N
115  PRINT "1= DATA ON FILE, 0= DATA IN DATA STATEMENTS. WHICH";
120  INPUT A0
125  IF A0=0 THEN 135
130  GOSUB 601
132  GOTO 140
135  MAT  READ X[N]
140  L=H=X[1]
145  FOR I=1 TO N
150  S=S+X[I]
155  S2=S2+X[I]^2
160  X[I]=INT(X[I]+.5)
165  IF H>X[I] THEN 175
170  H=X[I]
175  IF L<X[I] THEN 185
180  L=X[I]
185  NEXT I
190  Z=H
195  M=S/N
200  D=SQR((N*S2-S^2)/(N*(N-1)))
205  PRINT 
210  PRINT "INTERVAL SIZE";
215  INPUT I1
220  A=H-L+1
225  IF I1=1 THEN 330
230  L1=L
235  IF L1/I1=INT(L1/I1) THEN 250
240  L1=L1-1
245  GOTO 235
250  H1=H
255  IF H1/I1=INT(H1/I1) THEN 270
260  H1=H1+1
265  GOTO 255
270  A=INT(H1/I1)+1
275  IF L1 >= 0 THEN 285
280  A=INT((H1-L1)/I1)+1
285  IF A>850 THEN 295
290  GOTO 305
295  PRINT "CHOOSE A LARGER INTERVAL."
300  GOTO 205
305  Y[A]=L1
310  FOR I=A-1 TO 1 STEP -1
315  Y[I]=Y[I+1]+I1
320  NEXT I
325  GOTO 380
330  Y[1]=H
335  Z=H-L+1
340  IF L<0 THEN 360
345  Z=H
350  IF H<850 THEN 365
355  Z=H-L+1
360  IF Z>850 THEN 545
365  FOR I=2 TO Z
370  Y[I]=Y[I-1]-1
375  NEXT I
380  MAT F=ZER
385  FOR J=1 TO N
390  FOR I=1 TO A
395  IF X[J] >= Y[I] THEN 405
400  NEXT I
405  F[I]=F[I]+1
410  NEXT J
415  PRINT 
420  PRINT "CLASS"
425  PRINT "INTERVAL        FREQ"
430  PRINT 
435  IF I1=1 THEN 470
440  FOR I=1 TO A
445  IF Y[I]>H THEN 460
450  K=Y[I]+I1-1
455  PRINT Y[I];"-   ";K;F[I]
460  NEXT I
465  GOTO 485
470  FOR I=1 TO A
475  PRINT Y[I],F[I]
480  NEXT I
485  PRINT 
490  PRINT "NUMBER OF SCORES =";N
495  PRINT 
500  PRINT "MAXIMUM SCORE IS";H
505  PRINT 
510  PRINT "MINIMUM SCORE IS";L
515  PRINT 
520  PRINT "SUM=";S
525  PRINT "SUM SQR =";S2
530  PRINT "MEAN =";M
535  PRINT "STDEV =";D
540  STOP 
545  PRINT "THE RANGE IS TOO LARGE."
555  END 
601  PRINT "FILE NAME";
602  INPUT B$
603  ASSIGN B$,1,Z8
605  READ #1,1
610  FOR I=1 TO N
615  READ #1;X[I]
620  NEXT I
625  RETURN 
9999  END 
