C+
C NAME:
C	WhatIsI8
C PURPOSE:
C	Write information about integer*8 array
C CALLING SEQUENCE:
	subroutine WhatIsI8(N,A,cStr)
C INPUTS:
C	N		integer		# elements in array A
C	A(N)		integer*8	array
C	cStr*(*)	character*(*)	message
C OUTPUTS:
C	(to screen)
C CALLS:
C	BadI8, ArrI8GetMinMax, iArrI8ValuePresent
C MODIFICATION HISTORY:
C	JAN-2006, Paul Hick (UCSD/CASS; pphick@ucsd.edu)
C-
	    integer	N
	    integer*8	A(*)
	    character	cStr*(*)

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

	integer*8	BadI8
	integer*8	iBad
	integer*8	nmin
	integer*8	nmax

	M = abs(N)

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

	iBad = BadI8()

	nBad  = iArrI8ValuePresent(M,A,iBad)
	nZero = iArrI8ValuePresent(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
