*     G02LDF Example Program Text
*     Mark 22 Release. NAG Copyright 2008.
*     .. Parameters ..
      INTEGER          NIN, NOUT
      PARAMETER        (NIN=5,NOUT=6)
      INTEGER          NMAX, MZMAX, MYMAX
      PARAMETER        (NMAX=25,MZMAX=28,MYMAX=10)
*     .. Local Scalars ..
      INTEGER          I, IFAIL, IP, ISCALE, J, L, LDB, LDYHAT, LDZ, MY,
     +                 MZ, N, ORIG
*     .. Local Arrays ..
      DOUBLE PRECISION B(MZMAX+1,MYMAX), XBAR(MZMAX), XSTD(MZMAX),
     +                 YBAR(MYMAX), YHAT(NMAX,MYMAX), YSTD(MYMAX),
     +                 Z(NMAX,MZMAX)
      INTEGER          ISZ(MZMAX)
*     .. External Subroutines ..
      EXTERNAL         G02LDF, X04CAF
*     .. Executable Statements ..
      WRITE (NOUT,*) 'G02LDF example program results'
*     Skip header in data file.
      READ (NIN,*)
*     Read data values.
      READ (NIN,*) IP, MY, ORIG, ISCALE, N, MZ
      LDB = MZMAX + 1
      LDYHAT = NMAX
      LDZ = NMAX
*     Read prediction x-data
      DO I = 1, N
         READ (NIN,*) (Z(I,J),J=1,MZ)
      END DO
*     Read elements of ISZ
      READ (NIN,*) (ISZ(J),J=1,MZ)
*     Read parameter estimates
      L = IP
      IF (ORIG.NE.-1) L = L + 1
      READ (NIN,*) ((B(J,I),I=1,MY),J=1,L)
*     Read means
      READ (NIN,*) (XBAR(J),J=1,IP)
      READ (NIN,*) (YBAR(L),L=1,MY)
      IF ((ORIG.EQ.-1) .AND. (ISCALE.NE.-1)) THEN
         READ (NIN,*) (XSTD(J),J=1,IP)
         READ (NIN,*) (YSTD(L),L=1,MY)
      END IF
*     Calculate predictions
      IFAIL = 1
      CALL G02LDF(IP,MY,ORIG,XBAR,YBAR,ISCALE,XSTD,YSTD,B,LDB,N,MZ,ISZ,
     +            Z,LDZ,YHAT,LDYHAT,IFAIL)
      IF (IFAIL.NE.0) THEN
         WRITE (NOUT,99999) IFAIL
      ELSE
         CALL X04CAF('G','X',N,MY,YHAT,LDYHAT,'YHAT',IFAIL)
      END IF
*
99999 FORMAT (1X,/1X,' ** G02LDF returned with IFAIL = ',I5)
      END
