* M01NAF Example Program Test * NAG COPYRIGHT 2008. IMPLICIT NONE * .. Parameters .. INTEGER NIN, NOUT PARAMETER (NIN=5,NOUT=6) INTEGER RVMAX PARAMETER (RVMAX=100) * .. Local Scalars .. DOUBLE PRECISION ITEM INTEGER I, IFAIL, INDEX, LENRV LOGICAL FIRST * .. Local Arrays .. DOUBLE PRECISION RV(RVMAX) * .. External Functions .. INTEGER M01NAF EXTERNAL M01NAF * .. Executable Statements .. WRITE (NOUT,*) 'M01NAF Example Program Results' WRITE (NOUT,*) * * Read in Reference Vector RV READ (NIN,*) READ (NIN,*) LENRV IF (LENRV.LE.RVMAX) THEN READ (NIN,*) (RV(I),I=1,LENRV) * * Read items sought in the reference vector FIRST = .TRUE. 20 READ (NIN,*,END=40) ITEM * IFAIL = 1 INDEX = M01NAF(FIRST,RV,1,16,ITEM,IFAIL) * IF (IFAIL.EQ.0) THEN IF (FIRST) THEN * Print the reference vector WRITE (NOUT,*) 'Reference Vector is:' WRITE (NOUT,99999) (RV(I),I=1,LENRV) FIRST = .FALSE. END IF * WRITE (NOUT,*) WRITE (NOUT,99998) ITEM, INDEX GO TO 20 ELSE WRITE (NOUT,99997) IFAIL END IF ELSE WRITE (NOUT,99996) RVMAX, LENRV END IF 40 CONTINUE * 99999 FORMAT (1X,8F7.1) 99998 FORMAT (1X,'Search for item ',F7.1,' returned index: ',I4) 99997 FORMAT (1X,'** M01NAF returned with IFAIL = ',I5) 99996 FORMAT (1X,'** Length of reference vector = ',I4,' but must not ', + 'exceed ',I3) END