10  COM X[103,22],M[19,19],U[19,19],Q[20],V[20],P[78]
30  COM M$[60],N$[72]
40  COM N,K,N8,K8,N9,K9,Q9,Q7,Q5,Q4,Q3,Q2,Q1
45  COM I3,I4,U9,X$[20]
50  REM:12MAY74
60  REM: 2-WAY FREQ. DIST.
62  REM: >CTAB
150  DIM C[22,10],N[10]
152  DIM H$[6],V$[6]
154  DIM A$[8],B$[8]
300  MAT C=ZER
301  F=0
302  GOTO Q9 OF 303,303,306
303  PRINT "NEED TO DEFINE CLASS INTERVALS FOR VERTICAL OR HORIZONTAL"
304  PRINT "VARIABLES";
305  GOTO 307
306  PRINT "NEED TO DEFINE CLASS INTERVALS";
307  INPUT B$[1,1]
308  PRINT 
309  IF B$[1,1]="N" THEN 311
310  GOTO 326
311  F=1
312  FOR I=Q4 TO N
314  IF X[I,K9+2]=0 THEN 322
316  V=X[I,Q[8]]
318  H=X[I,Q[9]]
320  C[V,H]=C[V,H]+1
322  NEXT I
324  GOTO 580
326  N1=0
328  FOR I=Q4 TO N
330  IF X[I,K9+2]=0 THEN 334
332  N1=N1+1
334  NEXT I
350  Q=Q[8]
355  PRINT "VERTICAL VARIABLE:"
360  GOSUB 2000
370  V1=M
380  V2=W
390  Q=Q[9]
395  PRINT "HORIZONTAL VARIABLE:"
400  GOSUB 2000
410  H1=M
420  H2=W
425  FOR I=Q4 TO N
430  IF X[I,K9+2]=0 THEN 570
440  V=(X[I,Q[8]]-V1)/V2+11
450  V=INT(V+.5)
460  IF V>0 THEN 480
470  V=1
480  IF V<22 THEN 500
490  V=21
500  H=(X[I,Q[9]]-H1)/H2+5
510  H=INT(H+.5)
520  IF H>0 THEN 540
530  H=1
540  IF H<10 THEN 560
550  H=9
560  C[V,H]=C[V,H]+1
570  NEXT I
580  FOR I=1 TO 21
590  Z=0
600  FOR J=1 TO 9
610  Z=C[I,J]+Z
620  NEXT J
630  C[I,10]=Z
640  NEXT I
650  FOR J=1 TO 10
660  Z=0
665  FOR I=1 TO 21
670  Z=C[I,J]+Z
680  NEXT I
690  C[22,J]=N[J]=Z
700  NEXT J
770  IF Q3#1 THEN 875
780  IF Q[8]>10 THEN 810
790  V$=M$[6*Q[8]-5,6*Q[8]]
800  GOTO 820
810  V$=N$[6*Q[8]-65,6*Q[8]-60]
820  IF Q[9]>10 THEN 850
830  H$=M$[6*Q[9]-5,6*Q[9]]
840  GOTO 860
850  H$=N$[6*Q[9]-65,6*Q[9]-60]
860  PRINT "JOINT DISTRIBUTION OF "V$" VERSUS "H$
870  PRINT 
875  A$="#,4D2X"
880  GOSUB 3000
885  IF F=1 THEN 1000
890  PRINT "WANT PRINTOUT OF KEY FOR CATEGORY  LABELS";
900  INPUT B$
905  IF B$[1,1]="N" THEN 1000
910  PRINT 
915  PRINT "VERTICAL VARIABLE:"
916  PRINT 
917  PRINT "CATEGORY","MIDPOINT"
920  FOR I=1 TO 21
925  IF C[I,10]=0 THEN 938
930  PRINT I,
935  PRINT  USING "D.5DE";V1+(I-11)*V2
938  NEXT I
939  PRINT 
940  PRINT "HORIZONTAL VARIABLE:"
941  PRINT 
942  PRINT "CATEGORY","MIDPOINT"
945  FOR J=1 TO 9
950  IF C[22,J]=0 THEN 970
955  PRINT J,
965  PRINT  USING "D.5DE";H1+(J-5)*H2
970  NEXT J
975  PRINT 
980  PRINT "THE EXTREME CATEGORIES ARE OPEN-ENDED"
985  PRINT 
1000  GOTO Q9 OF 1005,1005,1015
1005  PRINT "WANT CONDITIONAL DISTRIBUTION (IN PERCENTAGE FORM) OF THE"
1006  PRINT "VERTICAL VARIABLE GIVEN THE HORIZONTAL VARIABLE";
1010  GOTO 1020
1015  PRINT "WANT CONDITIONAL DISTRIBUTION";
1020  INPUT B$
1030  PRINT 
1040  IF B$[1,1]="N" THEN 9998
1045  IF Q3#1 THEN 1070
1050  PRINT "CONDITIONAL DISTRIBUTION OF "V$" GIVEN "H$
1060  PRINT 
1070  FOR J=1 TO 10
1080  IF C[22,J]=0 THEN 1130
1090  FOR I=1 TO 22
1100  IF C[I,10]=0 THEN 1120
1110  C[I,J]=100*C[I,J]/C[22,J]
1120  NEXT I
1130  NEXT J
1140  A$="#,3D.DX"
1150  GOSUB 3000
1160  PRINT "   NUMBER   ";
1170  FOR J=1 TO 10
1180  IF N[J]=0 THEN 1200
1190  PRINT  USING "#,4D2X";N[J]
1200  NEXT J
1210  PRINT 
1220  PRINT 
1230  GOTO 9998
2000  FOR I=Q4 TO N
2010  IF X[I,K9+2]=0 THEN 2050
2020  M1=M2=X[I,Q]
2040  GOTO 2060
2050  NEXT I
2060  FOR I1=I+1 TO N
2070  IF X[I1,K9+2]=0 THEN 2120
2080  IF M1 <= X[I1,Q] THEN 2100
2090  M1=X[I1,Q]
2100  IF M2 >= X[I1,Q] THEN 2120
2110  M2=X[I1,Q]
2120  NEXT I1
2130  PRINT "MIN. OBS. =";M1;"MAX. OBS. =";M2
2140  PRINT "MEAN =";X[N9+1,Q];"STD. DEV. =";X[N9+2,Q]
2150  PRINT "SAMPLE SIZE=";N1
2160  PRINT 
2170  GOTO Q9 OF 2180,2180,2200
2180  PRINT "* GIVE MIDPOINT OF A CENTRAL INTERVAL OF VARIABLE: ";
2190  GOTO 2210
2200  PRINT "* MIDPOINT: ";
2210  ENTER 30,Q8,M
2220  PRINT 
2230  IF Q8>0 THEN 2290
2240  PRINT 
2250  PRINT "CHOOSE A CONVENIENT NUMBER NEAR THE MEAN AND/OR ONE NOT"
2260  PRINT "TOO FAR FROM HALFWAY BETWEEN THE MIN. OBS. AND MAX. OBS."
2270  PRINT 
2280  GOTO 2200
2290  GOTO Q9 OF 2300,2300,2320
2300  PRINT "* GIVE WIDTH OF EACH CLASS INTERVAL OF VARIABLE: ";
2310  GOTO 2330
2320  PRINT "* WIDTH OF INTERVAL: ";
2330  ENTER 30,Q8,W
2340  PRINT 
2342  PRINT 
2345  IF Q8>0 THEN 2390
2350  PRINT "USE YOUR COMMON SENSE, OR TRY A 'ROUND NUMBER' ABOUT HALF"
2360  PRINT "THE STD. DEV."
2370  PRINT 
2380  GOTO 2320
2390  RETURN 
3000  Z=0
3002  FOR J=1 TO 9
3004  IF C[22,J]=0 THEN 3008
3006  Z=Z+1
3008  NEXT J
3010  PRINT TAB(12+INT(3*Z));H$
3015  PRINT 
3020  PRINT TAB(3);V$;TAB(12);
3030  FOR J=1 TO 9
3040  IF C[22,J]=0 THEN 3060
3050  PRINT  USING "#,4D2X";J
3060  NEXT J
3070  PRINT " TOTAL"
3080  PRINT 
3090  FOR I=1 TO 21
3095  IF C[I,10]=0 THEN 3200
3100  PRINT  USING "#,7D";I
3150  PRINT TAB(12);
3160  FOR J=1 TO 10
3165  IF C[22,J]=0 THEN 3180
3170  PRINT  USING A$;C[I,J]
3180  NEXT J
3190  PRINT 
3200  NEXT I
3205  PRINT 
3210  PRINT "   TOTAL    ";
3220  FOR J=1 TO 10
3225  IF C[22,J]=0 THEN 3235
3230  PRINT  USING A$;C[22,J]
3235  NEXT J
3240  PRINT 
3245  PRINT 
3250  RETURN 
9998  CHAIN "$IDA",150
9999  END 
