*     G12BAF Example Program Text
*     Mark 17 Release. NAG Copyright 1995.
*
*     .. Parameters ..
      INTEGER          NMAX, NDMAX, MMAX, SMAX, NIN, NOUT
      PARAMETER        (NMAX=42,NDMAX=42,MMAX=2,SMAX=1,NIN=5,NOUT=6)
*     .. Local Scalars ..
      DOUBLE PRECISION DEV, TOL
      INTEGER          I, IDF, IFAIL, IP, IPRINT, IRANK, J, LDZ, M,
     +                 MAXIT, N, ND, NS
*     .. Local Arrays ..
      DOUBLE PRECISION B(MMAX), COV(MMAX*(MMAX+1)/2), OMEGA(NMAX),
     +                 RES(NMAX), SC(MMAX), SE(MMAX), SUR(NDMAX,SMAX),
     +                 T(NMAX), TP(NDMAX), V(NMAX,MMAX+7),
     +                 WK(MMAX*(MMAX+9)/2+NMAX), Y(NMAX), Z(NMAX,MMAX)
      INTEGER          IC(NMAX), ISI(NMAX), ISZ(MMAX), IWK(2*NMAX)
*     .. External Subroutines ..
      EXTERNAL         G02GCF, G12BAF
*     .. Intrinsic Functions ..
      INTRINSIC        DBLE, LOG, MAX
*     .. Executable Statements ..
      WRITE (NOUT,*) 'G12BAF Example Program Results'
*     Skip heading in data file
      READ (NIN,*)
      READ (NIN,*) N, M, NS, MAXIT, IPRINT
      IF (N.LE.NMAX .AND. M.LE.MMAX) THEN
         IF (NS.GT.0) THEN
            DO 20 I = 1, N
               READ (NIN,*) T(I), (Z(I,J),J=1,M), IC(I), ISI(I)
   20       CONTINUE
         ELSE
            DO 40 I = 1, N
               READ (NIN,*) T(I), (Z(I,J),J=1,M), IC(I)
   40       CONTINUE
         END IF
         READ (NIN,*) (ISZ(I),I=1,M), IP
         LDZ = NMAX
         TOL = 0.00005D0
         DO 60 I = 1, N
            Y(I) = 1.0D0 - DBLE(IC(I))
            V(I,7) = LOG(T(I))
   60    CONTINUE
         IFAIL = -1
         CALL G02GCF('L','M','Y','U',N,Z,LDZ,M,ISZ,IP+1,Y,RES,0.0D0,DEV,
     +               IDF,B,IRANK,SE,COV,V,NMAX,TOL,MAXIT,0,0.0D0,WK,
     +               IFAIL)
         IF (IFAIL.LT.0) GO TO 140
         DO 80 I = 1, IP
            B(I) = B(I+1)
   80    CONTINUE
         IF (IRANK.NE.IP+1) THEN
            WRITE (NOUT,*) ' WARNING: covariates not of full rank'
         END IF
         IFAIL = 0
*
         CALL G12BAF('No-offset',N,M,NS,Z,LDZ,ISZ,IP,T,IC,OMEGA,ISI,DEV,
     +               B,SE,SC,COV,RES,ND,TP,SUR,NDMAX,TOL,MAXIT,IPRINT,
     +               WK,IWK,IFAIL)
*
         WRITE (NOUT,*)
         WRITE (NOUT,*) ' Parameter      Estimate',
     +     '       Standard Error'
         WRITE (NOUT,*)
         DO 100 I = 1, IP
            WRITE (NOUT,99999) I, B(I), SE(I)
  100    CONTINUE
         WRITE (NOUT,*)
         WRITE (NOUT,99998) ' Deviance = ', DEV
         WRITE (NOUT,*)
         WRITE (NOUT,*) '    Time     Survivor Function'
         WRITE (NOUT,*)
         NS = MAX(NS,1)
         DO 120 I = 1, ND
            WRITE (NOUT,99997) TP(I), (SUR(I,J),J=1,NS)
  120    CONTINUE
      END IF
  140 CONTINUE
*
99999 FORMAT (I6,2(10X,F8.4))
99998 FORMAT (A,E13.4)
99997 FORMAT (F10.0,3(5X,F8.4))
      END
