10  COM N1,N2,N3
20  REM *****VORS VERSION 1, JUNE 15, 1971
30  REM *****TRANSLATED FROM 'FORTRAN PROGRAMMING FOR THE BEHAVIORAL
40  REM *****SCIENCE' BY D.J. VELDMAN
50  FILES VEC
60  DIM V[64,20],A[64],B[64],C[64]
70  T=N2
80  FOR K=1 TO N3
90  K2=2*K-1
100  READ #1,K2
110  FOR I=1 TO N2
120  READ #1;V[I,K]
130  NEXT I
140  NEXT K
150  REM NORMALIZE VARIABLES TO UNIT COMMUNALITY
160  FOR I=1 TO N2
170  B[I]=0
180  FOR K=1 TO N3
190  B[I]=B[I]+V[I,K]^2
200  NEXT K
210  B[I]=SQR(B[I])
220  B1=1/B[I]
230  FOR K=1 TO N3
240  V[I,K]=V[I,K]*B1
250  NEXT K
260  NEXT I
270  K2=0
280  FOR K=1 TO N3
290  FOR L=K TO N3
300  REM GET ANGLE OR ROT
310  IF K=L THEN 660
320  FOR I=1 TO N2
330  A[I]=V[I,K]^2-V[I,L]^2
340  C[I]=2*V[I,K]*V[I,L]
350  NEXT I
360  A2=B2=C2=D2=C3=0
370  FOR I=1 TO N2
380  A2=A2+A[I]
390  B2=B2+C[I]
400  C2=C2+A[I]^2
410  C3=C3+C[I]^2
420  D2=D2+A[I]*C[I]
430  NEXT I
440  C2=C2-C3
450  D2=2*D2
460  X1=D2-2*A2*B2/T
470  X2=C2-(A2^2-B2^2)/T
480  Y=ATN(X1/X2)
490  IF X2>0 THEN 520
500  IF X1>0 THEN 540
510  Y=Y-3.1416
520  Y=Y/4
530  GOTO 560
540  Y=Y+6.2832
550  GOTO 510
560  IF (ABS(Y)<.0175) THEN 660
570  REM ROTATE FACTORS K,L
580  C1=COS(Y)
590  S1=SIN(Y)
600  K2=1
610  FOR I=1 TO N2
620  Q=V[I,K]*C1+V[I,L]*S1
630  V[I,L]=V[I,L]*C1-V[I,K]*S1
640  V[I,K]=Q
650  NEXT I
660  NEXT L
670  NEXT K
680  IF K2>0 THEN 270
690  REM DENORMALIZE ROWS OF V
700  FOR K=1 TO N3
710  FOR I=1 TO N2
720  V[I,K]=V[I,K]*B[I]
730  NEXT I
740  A1=0
750  REM COMP. PCT TRACE, SAVE IN A
760  FOR I=1 TO N2
770  A1=A1+V[I,K]^2
780  NEXT I
790  A[K]=(A1/T)*100
800  NEXT K
810  REM
820  FOR I=1 TO N2
830  B[I]=100*B[I]^2
840  NEXT I
850  PRINT 
860  PRINT 
870  PRINT "VARIMAX ROTATION ANALYSIS"
880  PRINT 
890  PRINT '10'13"PCT. OF TOT. VAR. FROM EACH FACTOR "
900  PRINT 
910  PRINT 1,2,3,4,5
920  PRINT 
930  FOR K=1 TO N3
940  A[K]=.0001*INT(10000*A[K]+.5)
950  NEXT K
960  FOR I1=1 TO N3
970  PRINT A[I1],
980  NEXT I1
990  PRINT '10'13'10'13"PCT. OF VAR OF EACH VARIABLE EXTRACTED"
1000  PRINT 1,2,3,4,5,'10'13
1010  FOR I=1 TO N2
1020  B1=.01*INT(100*B[I]+.5)
1030  PRINT B1,
1040  NEXT I
1050  PRINT '10'13'10'13"V LOAD"
1060  PRINT 1,2,3,4,5
1070  PRINT 
1080  FOR I=1 TO N2
1090  FOR K=1 TO N3
1100  C[K]=.0001*INT(10000*V[I,K]+.5)
1110  NEXT K
1120  FOR I1=1 TO N3-1
1130  PRINT C[I1],
1140  NEXT I1
1150  PRINT C[N3]
1160  NEXT I
1170  PRINT '10'13'10'13'10'13'10'13'10'13'10'13'10'13
1180  FOR I=1 TO 15
1190  PRINT '7'7'7'7'7'7'7'7'7'7'7'7'7'7'7'7'7'7;
1200  NEXT I
1210  END 
