* G03BDF Example Program Text * Mark 22 Release. NAG Copyright 2008. * .. Parameters .. INTEGER NIN, NOUT PARAMETER (NIN=5,NOUT=6) INTEGER NMAX, MMAX PARAMETER (NMAX=44,MMAX=11) * .. Local Scalars .. DOUBLE PRECISION POWER INTEGER I, IFAIL, J, LDFP, LDFS, LDPHI, LDR, LDRO, LDX, + M, N CHARACTER STAND * .. Local Arrays .. DOUBLE PRECISION FP(NMAX,MMAX), FS(NMAX,MMAX), PHI(MMAX,MMAX), + R(MMAX,MMAX), RO(MMAX,MMAX), X(NMAX,MMAX) * .. External Subroutines .. EXTERNAL G03BDF, X04CAF * .. Executable Statements .. WRITE (NOUT,*) 'G03BDF Example Program Results' * Skip heading in data file READ (NIN,*) READ (NIN,*) STAND, N, M, POWER IF (N.GT.NMAX .OR. M.GT.MMAX) THEN WRITE (NOUT,99998) GO TO 60 END IF LDX = NMAX LDRO = MMAX LDFP = NMAX LDFS = NMAX LDR = MMAX LDPHI = MMAX * Read orthognal loadings matrix. DO 20 I = 1, N READ (NIN,*) (X(I,J),J=1,M) 20 CONTINUE * Read orthogonal rotation matrix. DO 40 I = 1, M READ (NIN,*) (RO(I,J),J=1,M) 40 CONTINUE * IFAIL = 1 CALL G03BDF(STAND,N,M,X,LDX,RO,LDRO,POWER,FP,LDFP,R,LDR,PHI,LDPHI, + FS,LDFS,IFAIL) IF (IFAIL.NE.0) THEN WRITE (NOUT,99999) IFAIL GO TO 60 END IF * WRITE (NOUT,*) CALL X04CAF('G','X',N,M,FP,LDFP,'Factor pattern',IFAIL) WRITE (NOUT,*) CALL X04CAF('G','X',M,M,R,LDR,'ProMax rotation',IFAIL) WRITE (NOUT,*) CALL X04CAF('G','X',M,M,PHI,LDPHI,'Inter-factor correlations', + IFAIL) WRITE (NOUT,*) CALL X04CAF('G','X',N,M,FS,LDFS,'Factor structure',IFAIL) * 60 CONTINUE * 99999 FORMAT (1X,/1X,' ** G03BDF returned with IFAIL = ',I5) 99998 FORMAT (1X,' ** Problem size too large, increase array limits') END