C+
C NAME:
C	WhatIsI4
C PURPOSE:
C	Write information about integer*4 array
C CALLING SEQUENCE:
	subroutine WhatIsI4(N,A,cStr)
C INPUTS:
C	N		integer		# elements in array A
C	A(N)		integer		array
C	cStr*(*)	character*(*)	message
C OUTPUTS:
C	(to screen)
C CALLS:
C	BadI4, ArrI4GetMinMax, iArrI4ValuePresent
C MODIFICATION HISTORY:
C	AUG-2001, Paul Hick (UCSD/CASS; pphick@ucsd.edu)
C-
	    integer	N
	    integer	A(*)
	    character	cStr*(*)

	parameter	(K=8)
	integer		AK(K)
	integer		IK(K)

	integer		BadI4

	M = abs(N)

	call ArrI4GetMinMax(-M,A,nmin,nmax)

	iBad = BadI4()

	nBad  = iArrI4ValuePresent(M,A,iBad)
	nZero = iArrI4ValuePresent(M,A,0  )

	write (*,'(60(1H=))')
	write (*,'(1X,2A)') '>>>>> ',cStr(:itrim(cStr))

	if (M .ne. 0) then
	    write (*,*) '# Bad  values :',nBad ,' /',M
	    write (*,*) '# Zeros       :',nZero,' /',M
	    write (*,*) 'Minimum value :',nmin
	    write (*,*) 'Maximum value :',nmax

	    I1 = 1
	    I2 = 0
	    do while (I2 .lt. K .and. I1 .le. M)
		if (A(I1) .ne. iBad) then
		    I2 = I2+1
		    IK(I2) = I1
		    AK(I2) = A(I1)
		end if
		I1 = I1+1
	    end do

	    if (I2 .gt. 0) write (*,*) 'First elements:',(' >',IK(I1),'=',AK(I1), I1=1,I2)
	else
	    write (*,*) 'No data points in array'
	end if

	write (*,'(60(1H=))')

	return
	end
