*     G01ARF Example Program Text
*     Mark 20 Revised. NAG Copyright 2001.
*     .. Parameters ..
      INTEGER          NIN, NOUT
      PARAMETER        (NIN=5,NOUT=6)
      INTEGER          NMAX, LDPLOT
      PARAMETER        (NMAX=100,LDPLOT=100)
*     .. Local Scalars ..
      DOUBLE PRECISION UNIT, UNIT1, UNIT2
      INTEGER          I, IFAIL, J, LINES, N, NSTEPX, NSTEPY, OUTCHN
*     .. Local Arrays ..
      DOUBLE PRECISION SORTY(NMAX), Y(NMAX)
      INTEGER          IWORK(NMAX)
      CHARACTER        PLOT(LDPLOT,132)
*     .. External Subroutines ..
      EXTERNAL         G01ARF, X04ABF
*     .. Executable Statements ..
      WRITE (NOUT,*) 'G01ARF Example Program Results'
      OUTCHN = NOUT
*     Skip heading in data file
      READ (NIN,*)
*     Set advisory message unit for plot output to OUTCHN
      CALL X04ABF(1,OUTCHN)
   20 READ (NIN,*,END=60) UNIT, NSTEPX, NSTEPY
      READ (NIN,*) N
      READ (NIN,*) (Y(I),I=1,N)
      UNIT1 = UNIT
      UNIT2 = UNIT
      IF (N.LE.NMAX) THEN
         IFAIL = 1
         WRITE (NOUT,*)
*
         CALL G01ARF('Fences','Print',N,Y,NSTEPX,NSTEPY,UNIT1,PLOT,
     +               LDPLOT,LINES,SORTY,IWORK,IFAIL)
*
         IF (IFAIL.NE.0) THEN
            WRITE (NOUT,*)
            WRITE (NOUT,99997) ' ** G01ARF returned with IFAIL = ',
     +        IFAIL
            GO TO 60
         END IF
*
         WRITE (NOUT,*)
*
         IFAIL = 1
         CALL G01ARF('Extremes','Noprint',N,Y,NSTEPX,NSTEPY,UNIT2,PLOT,
     +               LDPLOT,LINES,SORTY,IWORK,IFAIL)
         IF (IFAIL.NE.0) THEN
            WRITE (NOUT,*)
            WRITE (NOUT,99997) ' ** G01ARF returned with IFAIL = ',
     +        IFAIL
            GO TO 60
         END IF
*
         DO 40 I = 1, LINES
            WRITE (NOUT,99998) (PLOT(I,J),J=1,NSTEPX)
   40    CONTINUE
      ELSE
         WRITE (NOUT,99999) 'N is too large: N = ', N
         GO TO 20
      END IF
   60 CONTINUE
*
99999 FORMAT (1X,A,I8)
99998 FORMAT (1X,132A)
99997 FORMAT (1X,A,I5)
      END
