* G02LCF Example Program Text * Mark 22 Release. NAG Copyright 2008. * .. Parameters .. INTEGER NIN, NOUT PARAMETER (NIN=5,NOUT=6) INTEGER MXMAX, MYMAX PARAMETER (MXMAX=30,MYMAX=10) * .. Local Scalars .. DOUBLE PRECISION RCOND INTEGER I, IFAIL, IP, ISCALE, J, LDB, LDC, LDOB, LDP, + LDVIP, LDW, LDYCV, MAXFAC, MY, NFACT, ORIG, + VIPOPT * .. Local Arrays .. DOUBLE PRECISION B(MXMAX,MYMAX), C(MYMAX,MXMAX), + OB(MXMAX+1,MYMAX), P(MXMAX,MXMAX), + VIP(MXMAX,MYMAX), W(MXMAX,MXMAX), XBAR(MXMAX), + XSTD(MXMAX), YBAR(MYMAX), YCV(MXMAX,MYMAX), + YSTD(MYMAX) * .. External Subroutines .. EXTERNAL G02LCF, X04CAF * .. Executable Statements .. WRITE (NOUT,*) 'G02LCF example program results' * Skip header in data file READ (NIN,*) * Read data values READ (NIN,*) IP, MY, MAXFAC, NFACT, ORIG, ISCALE, VIPOPT * IF ((IP.GT.MXMAX) .OR. (MY.GT.MYMAX) .OR. (MAXFAC.GT.MXMAX)) THEN WRITE (NOUT,99998) GO TO 20 END IF LDB = MXMAX LDC = MYMAX LDW = MXMAX LDP = MXMAX LDOB = MXMAX + 1 LDYCV = MXMAX LDVIP = MXMAX * Read P DO I = 1, IP READ (NIN,*) (P(I,J),J=1,MAXFAC) END DO * Read C DO I = 1, MY READ (NIN,*) (C(I,J),J=1,MAXFAC) END DO * Read W DO I = 1, IP READ (NIN,*) (W(I,J),J=1,MAXFAC) END DO * Read YCV READ (NIN,*) ((YCV(I,J),J=1,MY),I=1,MAXFAC) * Read means IF (ORIG.EQ.1) THEN READ (NIN,*) (XBAR(J),J=1,IP) READ (NIN,*) (YBAR(J),J=1,MY) IF (ISCALE.NE.-1) THEN READ (NIN,*) (XSTD(J),J=1,IP) READ (NIN,*) (YSTD(J),J=1,MY) END IF END IF * Calculate predictions RCOND = -1.0D0 IFAIL = 1 CALL G02LCF(IP,MY,MAXFAC,NFACT,P,LDP,C,LDC,W,LDW,RCOND,B,LDB,ORIG, + XBAR,YBAR,ISCALE,XSTD,YSTD,OB,LDOB,VIPOPT,YCV,LDYCV, + VIP,LDVIP,IFAIL) IF (IFAIL.NE.0) THEN WRITE (NOUT,99999) IFAIL GO TO 20 END IF CALL X04CAF('G','X',IP,MY,B,LDB,'B',IFAIL) IF (ORIG.EQ.1) THEN CALL X04CAF('G','X',IP+1,MY,OB,LDOB,'OB',IFAIL) END IF IF (VIPOPT.NE.0) THEN CALL X04CAF('G','X',IP,VIPOPT,VIP,LDVIP,'VIP',IFAIL) END IF * 20 CONTINUE * 99999 FORMAT (1X,/1X,' ** G02LCF returned with IFAIL = ',I5) 99998 FORMAT (1X,' ** Problem size too large, increase array limits') END