10  COM N1,N2,N3
20  REM *****MDRS VERSION 2, AUGUST 26, 1971
30  REM *****TRANSLATED FROM 'FORTRAN PROGRAMMING FOR THE BEHAVIORAL
40  REM *****SCIENCES' BY D.J. VELDMAN
50  PRINT "HOW MANY SUBJECTS ARE THERE";
60  INPUT N1
70  PRINT "HOW MANY VARIABLES ARE THERE";
80  INPUT N2
90  PRINT "MAXIMUM NUMBER OF FACTORS";
100  INPUT N3
110  FILES CORR,CORR1,S
120  REM DECLARE FILE IN THIS LINE
130  DIM X[64],R[64],A[64],S[64]
140  PRINT "MISSING DATA CODED WITH WHAT NUMBER (EG. 999)";
150  INPUT M
160  REM ZER COR, A &S
170  MAT R=ZER
180  FOR I=1 TO N2
190  FOR J=1 TO 3
200  READ #J,I*2-1
210  MAT  PRINT #J;R
220  NEXT J
230  NEXT I
240  FOR N=1 TO N1
250  F5=INT((N*2-1)/128)+4
260  I5=N-64*(F5-4)
270  READ #F5,I5*2-1
280  MAT  READ #F5;X[N2]
290  FOR I=1 TO N2
300  IF X[I]=M THEN 800
310  READ #1,I*2-1
320  MAT  READ #1;R[N2]
330  R[I]=R[I]+1
340  READ #1,I*2-1
350  MAT  PRINT #1;R
360  READ #2,I*2-1
370  MAT  READ #2;A[N2]
380  A[I]=A[I]+X[I]
390  READ #2,I*2-1
400  MAT  PRINT #2;A
410  READ #3,I*2-1
420  MAT  READ #3;S[N2]
430  S[I]=S[I]+X[I]^2
440  READ #3,I*2-1
450  MAT  PRINT #3;S
460  FOR J=I TO N2
470  IF I=J THEN 790
480  IF X[J]=M THEN 790
490  READ #1,I*2-1
500  MAT  READ #1;R[N2]
510  R[J]=R[J]+X[I]*X[J]
520  READ #1,I*2-1
530  MAT  PRINT #1;R
540  READ #1,J*2-1
550  MAT  READ #1;R[N2]
560  R[I]=R[I]+1
570  READ #1,J*2-1
580  MAT  PRINT #1;R
590  READ #2,I*2-1
600  MAT  READ #2;A[N2]
610  A[J]=A[J]+X[I]
620  READ #2,I*2-1
630  MAT  PRINT #2;A
640  READ #2,J*2-1
650  MAT  READ #2;A[N2]
660  A[I]=A[I]+X[J]
670  READ #2,J*2-1
680  MAT  PRINT #2;A
690  READ #3,I*2-1
700  MAT  READ #3;S[N2]
710  S[J]=S[J]+X[I]^2
720  READ #3,I*2-1
730  MAT  PRINT #3;S
740  READ #3,J*2-1
750  MAT  READ #3;S[N2]
760  S[I]=X[J]^2+S[I]
770  READ #3,J*2-1
780  MAT  PRINT #3;S
790  NEXT J
800  NEXT I
810  NEXT N
820  FOR I=1 TO N2
830  FOR J=I TO N2
840  READ #2,I*2-1
850  MAT  READ #2;A[N2]
860  READ #1,J*2-1
870  MAT  READ #1;R[N2]
880  A[J]=A[J]/R[I]
890  READ #2,I*2-1
900  MAT  PRINT #2;A
910  READ #3,I*2-1
920  MAT  READ #3;S[N2]
930  S[J]=SQR(S[J]/R[I]-A[J]^2)
940  READ #3,I*2-1
950  MAT  PRINT #3;S
960  IF I=J THEN 1070
970  READ #2,J*2-1
980  MAT  READ #2;A[N2]
990  A[I]=A[I]/R[I]
1000  READ #2,J*2-1
1010  MAT  PRINT #2;A
1020  READ #3,J*2-1
1030  MAT  READ #3;S[N2]
1040  S[I]=SQR(S[I]/R[I]-A[I]^2)
1050  READ #3,J*2-1
1060  MAT  PRINT #3;S
1070  NEXT J
1080  NEXT I
1090  FOR I=1 TO N2
1100  FOR J=I TO N2
1110  IF I=J THEN 1420
1120  READ #3,I*2-1
1130  MAT  READ #3;S[N2]
1140  S1=S[J]
1150  READ #3,J*2-1
1160  MAT  READ #3;S[N2]
1170  READ #1,I*2-1
1180  MAT  READ #1;R[N2]
1190  IF S1*S[I]>0 THEN 1240
1200  R[J]=0
1210  READ #1,I*2-1
1220  MAT  PRINT #1;R
1230  GOTO 1420
1240  READ #1,J*2-1
1250  MAT  READ #1;X[N2]
1260  R2=X[I]
1270  READ #2,J*2-1
1280  MAT  READ #2;A[N2]
1290  A2=A[I]
1300  READ #3,J*2-1
1310  MAT  READ #3;S[N2]
1320  S2=S[I]
1330  READ #2,I*2-1
1340  MAT  READ #2;A[N2]
1350  READ #3,I*2-1
1360  MAT  READ #3;S[N2]
1370  READ #1,I*2-1
1380  MAT  READ #1;R[N2]
1390  R[J]=(R[J]/R2-A[J]*A2)/(S[J]*S2)
1400  READ #1,I*2-1
1410  MAT  PRINT #1;R
1420  NEXT J
1430  NEXT I
1440  J=1
1450  PRINT '10'13'10'13"NUMBER OF VALID OBSERVATIONS PER VARIABLE"'10'13'10'13,1,2,3,4,5,'10'13'10'13
1460  GOSUB 1880
1470  J=2
1480  PRINT '10'13'10'13'10'13"MEANS"'10'13'10'13,1,2,3,4,5,'10'13'10'13
1490  GOSUB 1880
1500  J=3
1510  PRINT '10'13'10'13
1520  PRINT '10'13'10'13'10'13"SIGMAS"'10'13'10'13,1,2,3,4,5
1530  PRINT 
1540  GOSUB 1880
1550  REM FIX UP R
1560  FOR J=1 TO N2
1570  READ #1,J*2-1
1580  MAT  READ #1;R[N2]
1590  R[J]=1
1600  READ #1,J*2-1
1610  MAT  PRINT #1;R
1620  NEXT J
1630  REM FIX UP OFF DIAGONALS
1640  FOR J=2 TO N2
1650  FOR K=1 TO J-1
1660  READ #1,K*2-1
1670  MAT  READ #1;X[N2]
1680  READ #1,J*2-1
1690  MAT  READ #1;R[N2]
1700  R[K]=X[J]
1710  READ #1,J*2-1
1720  MAT  PRINT #2;R
1730  NEXT K
1740  NEXT J
1750  PRINT '10'13'10'13
1760  PRINT '10'13'10'13"CORRELATION MATRIX"'10'13'10'13,1,2,3,4,5,'10'13'10'13
1770  FOR I=1 TO N2
1780  READ #1,I*2-1
1790  MAT  READ #1;R[N2]
1800  FOR J1=1 TO N2
1810  PRINT .0001*INT(10000*R[J1]+.5),
1820  NEXT J1
1830  PRINT 
1840  PRINT 
1850  NEXT I
1860  PRINT '10'13'10'13
1870  CHAIN "$SEVS"
1880  REM OUTPUT OF DIAGONALS ROUTINE
1890  FOR I=1 TO N2
1900  READ #J,I*2-1
1910  MAT  READ #J;X[N2]
1920  PRINT .0001*INT(10000*X[I]+.5),
1930  NEXT I
1940  RETURN 
1950  END 
