*     G13BEF Example Program Text
*     Mark 15 Revised. NAG Copyright 1991.
*     .. Parameters ..
      INTEGER          NSERMX, NPMAX, NXXYMX, ISTTF, LDXXY, LDCM, IWA,
     +                 IMWA
      PARAMETER        (NSERMX=2,NPMAX=10,NXXYMX=50,ISTTF=20,
     +                 LDXXY=NXXYMX,LDCM=NPMAX,IWA=1500,IMWA=200)
      INTEGER          NIN, NOUT
      PARAMETER        (NIN=5,NOUT=6)
*     .. Local Scalars ..
      DOUBLE PRECISION D, S
      INTEGER          I, IFAIL, ITC, J, KEF, KFC, KPRIV, KZEF, KZSP,
     +                 NDF, NDV, NIT, NPARA, NSER, NSTTF, NXXY, OUTCHN
*     .. Local Arrays ..
      DOUBLE PRECISION CM(LDCM,NPMAX), PARA(NPMAX), RES(NXXYMX),
     +                 SD(NPMAX), STTF(ISTTF), WA(IWA),
     +                 XXY(LDXXY,NSERMX), ZSP(4)
      INTEGER          MR(7), MT(4,NSERMX), MWA(IMWA)
*     .. External Subroutines ..
      EXTERNAL         G13BEF, X04ABF
*     .. Executable Statements ..
      WRITE (NOUT,*) 'G13BEF Example Program Results'
      OUTCHN = NOUT
*     Skip heading in data file
      READ (NIN,*)
      READ (NIN,*) KZEF, KFC, NXXY, NSER, KEF, NIT, KZSP
      IF (NXXY.GT.0 .AND. NXXY.LE.NXXYMX .AND. NSER.GT.0 .AND. NSER.LE.
     +    NSERMX) THEN
         IF (KZSP.NE.0) READ (NIN,*) ZSP
         CALL X04ABF(1,OUTCHN)
         READ (NIN,*) (MR(I),I=1,7)
         DO 20 I = 1, 4
            READ (NIN,*) (MT(I,J),J=1,NSER)
   20    CONTINUE
         NPARA = 0
         DO 40 I = 1, NSER
            NPARA = NPARA + MT(2,I) + MT(3,I)
   40    CONTINUE
         NPARA = NPARA + MR(1) + MR(3) + MR(4) + MR(6) + NSER
         IF (NPARA.LE.NPMAX) THEN
            READ (NIN,*) (PARA(I),I=1,NPARA)
            DO 60 I = 1, NXXY
               READ (NIN,*) (XXY(I,J),J=1,NSER)
   60       CONTINUE
*           * Set KPRIV to 1 to obtain monitoring information *
            KPRIV = 0
            IFAIL = 1
*
            CALL G13BEF(MR,NSER,MT,PARA,NPARA,KFC,NXXY,XXY,LDXXY,KEF,
     +                  NIT,KZSP,ZSP,ITC,SD,CM,LDCM,S,D,NDF,KZEF,RES,
     +                  STTF,ISTTF,NSTTF,WA,IWA,MWA,IMWA,KPRIV,IFAIL)
*
            IF (IFAIL.NE.0) THEN
               WRITE (NOUT,*)
               WRITE (NOUT,99999) 'G13BEF fails. IFAIL =', IFAIL
            END IF
            IF (IFAIL.EQ.0 .OR. IFAIL.EQ.8 .OR. IFAIL.EQ.9 .OR.
     +          IFAIL.EQ.11) THEN
               WRITE (NOUT,*)
               WRITE (NOUT,99999)
     +           'The number of iterations carried out is', ITC
               WRITE (NOUT,*)
               WRITE (NOUT,*)
     +    'Final values of the parameters and their standard deviations'
               WRITE (NOUT,*)
               WRITE (NOUT,*)
     +           '   I            PARA(I)                 SD'
               WRITE (NOUT,*)
               DO 80 I = 1, NPARA
                  WRITE (NOUT,99998) I, PARA(I), SD(I)
   80          CONTINUE
               WRITE (NOUT,*)
               WRITE (NOUT,*) 'The correlation matrix is'
               WRITE (NOUT,*)
               WRITE (NOUT,99997) ((CM(I,J),J=1,NPARA),I=1,NPARA)
               WRITE (NOUT,*)
               WRITE (NOUT,*) 'The residuals and the z and n values are'
               WRITE (NOUT,*)
               WRITE (NOUT,*)
     +           '   I         RES(I)          z(t)           n(t)'
               WRITE (NOUT,*)
               NDV = NXXY - MR(2) - MR(5)*MR(7)
               DO 100 I = 1, NXXY
                  IF (I.LE.NDV) THEN
                     WRITE (NOUT,99996) I, RES(I), (XXY(I,J),J=1,NSER)
                  ELSE
                     WRITE (NOUT,99995) I, (XXY(I,J),J=1,NSER)
                  END IF
  100          CONTINUE
               IF (MR(2).NE.0 .OR. MR(5).NE.0) THEN
                  WRITE (NOUT,*)
                  WRITE (NOUT,*)
     +      '** Note that the residuals relate to differenced values **'
               END IF
               WRITE (NOUT,*)
               WRITE (NOUT,99994) 'The state set consists of', NSTTF,
     +           ' values'
               WRITE (NOUT,*)
               WRITE (NOUT,99993) (STTF(I),I=1,NSTTF)
               WRITE (NOUT,*)
               WRITE (NOUT,99999) 'The number of degrees of freedom is',
     +           NDF
            END IF
         END IF
      END IF
*
99999 FORMAT (1X,A,I4)
99998 FORMAT (1X,I4,2F20.6)
99997 FORMAT (1X,5F10.4)
99996 FORMAT (1X,I4,3F15.3)
99995 FORMAT (1X,I4,F30.3,F15.3)
99994 FORMAT (1X,A,I4,A)
99993 FORMAT (1X,6F10.4)
      END
