	FUNCTION STRVAL (STRA)
c---------------------------------------------------
c	Nov-10-94  V1.0.2  Jan-27-91
c--------------------------------------------------

c-------String to value conversion

	CHARACTER *(*) STRA

	REAL *4    ZERO,ONE,PN,SUM,STRVAL
	INTEGER *4 IS,IP,IB,IE,IG,IC,L,I,IV,Nsn
	character *80 STR

	PARAMETER (ZERO=0.0,ONE=1.0)

c-------Take cae of leading blank space in STR
	n = lenstr(STRA)
	do i=1,n
	    if (STRA(i:i).ne." ") then
		Is = i
		go to 1000
	    endif
	end do
	strval = 0.0
	return

 1000	continue
	STR = STRA(Is:n)//" "
		
c------------------------------
c	     Ip   Ie  Ic
c	-xxxx.yyyyE+zzz
c	 Is L    Ib Ig
c------------------------------

c-------positive or negative
	IF (STR(1:1).EQ.'-') THEN
	  PN=-ONE
	  IS=2
	ELSE
	  PN=ONE
	  IS=1
	ENDIF

	IP=INDEX(STR,'.')
	IB=INDEX(STR,' ')
	if (IB.ne.0) IB=IB-1

	IE=INDEX(STR,'E')
	if (IE.eq.0) IE=INDEX(STR,'e')
	if (IE.eq.0) then
	  IF (IB.EQ.0) IB=LEN(STR)
	else
c---------scientific notation part
	  IC=IB
	  IF (IC.EQ.0) IC=LEN(STR)
	  IB=IE-1
	  IG=IE+2

	  SUM=ZERO
	  do 100 I=IG,IC
	    IV=ICHAR(STR(I:I))-48
	    SUM=SUM+REAL(IV)*10.0**(IC-I)
  100	  continue
	  Nsn=nint(SUM)
	  if (STR(IE+1:IE+1).eq."-") Nsn=-Nsn

	endif

	SUM=ZERO
	IF (IP.EQ.0) THEN
c---------integer case
	  L=IB
	ELSE
c---------conversion after decimal point
	  L=IP-1
	  if (IP+1.le.IB) then
	    DO 20 I=IP+1,IB
	      IV=ICHAR(STR(I:I))-48
	      SUM=SUM+REAL(IV)/10.0**(I-IP)
   20	    CONTINUE
	  endif
	ENDIF

c-------conversion before decimal point
	if (IS.le.L) then
	  DO 10 I=IS,L
	    IV=ICHAR(STR(I:I))-48
	    SUM=SUM+REAL(IV)*10.0**(L-I)
   10	  CONTINUE
	endif

	STRVAL=SUM*PN

	if (IE.ne.0) then
	  STRVAL = STRVAL * 10.0**(Nsn)
	endif

	RETURN
	END

