      subroutine CharToNumeric(astring,f)
      implicit none
!
! transform a string consisting all numbers in time representation (1234 or 12:34 or 
! 12:23:15,or 12.19) into a number
      character*20 astring
      character*1,c
      character*2,HH,MM,SS
      character*4 MMSS
      
      double precision f,f11,f22,f33
      integer ipos1,ipos2,ideci,k,j,ndigit,i
      
      ipos1=1
190   if(astring(ipos1:ipos1).ne.' ')goto 200
      ipos1=ipos1+1
      goto 190
200   ipos2=ipos1+1
202   if(astring(ipos2:ipos2).eq.' ')goto 204
      ipos2=ipos2+1
      goto 202
204   ipos2=ipos2-1
      
      if(astring(ipos1:ipos1).eq.'-')then
        ipos1=ipos1+1
      endif
      
      ideci=index(astring,'.')      
      if(ideci.eq.0)then
!1234 or 12:34 or 12:34:50 type
        f=-9999.0d0
        if(index(astring,':').eq.0)then
! an integer number
          ndigit=ipos2-ipos1+1
          if(ndigit.ge.3.and.ndigit.le.6)then
            f33=-99.0d0
            c=astring(ipos2:ipos2)
            f11=dble(ichar(c)-48)
            c=astring(ipos2-1:ipos2-1)
            f11=f11+dble((ichar(c)-48)*10)
            
            c=astring(ipos2-2:ipos2-2)
            f22=dble(ichar(c)-48)
            if(ndigit.ge.4)then
              c=astring(ipos2-3:ipos2-3)
              f22=f22+dble((ichar(c)-48)*10)
            endif

            if(ndigit.ge.5)then
              c=astring(ipos2-4:ipos2-4)
              f33=dble(ichar(c)-48)
            endif
            
            if(ndigit.eq.6)then
              c=astring(ipos2-5:ipos2-5)
              f33=f33+dble((ichar(c)-48)*10)
            endif
            
            if(f33.lt.0.0d0)then
              if(f11.le.60.0d0.and.f22.le.24.0d0)then
                f=f22+f11/60.0d0
              endif
            else
              if(f33.le.24.0d0.and.f22.le.60.0d0.and.
     &           f11.le.60.0d0)then
                f=f33+f22/60.0d0+f11/3600.0d0
              endif
            endif
          endif
        else
!HH:MM or HH:MM:SS type
          k=index(astring,':')
          HH=astring(ipos1:k-1)
          MMSS=astring(k+1:ipos2)
          j=index(MMSS,':')
          if(j.eq.0)then
            MM=MMSS
          else
            MM=MMSS(1:j-1)
            SS=MMSS(j+1:)
          endif
          
          f33=dble((ichar(HH(1:1))-48))
          if(HH(2:2).ne.' ')then
            f33=f33*10.0d0+dble(ichar(HH(2:2))-48)
          endif

          f22=dble((ichar(MM(1:1))-48))
          if(MM(2:2).ne.' ')then
            f22=f22*10.0d0+dble(ichar(MM(2:2))-48)
          endif
          
          if(j.ne.0)then
            f11=dble((ichar(SS(1:1))-48))
            if(SS(2:2).ne.' ')then
              f11=f11*10.0d0+dble(ichar(SS(2:2))-48)
            endif
          endif
          
          if(f33.le.24.0d0.and.f22.le.60.0d0)then
            f=f33+f22/60.0d0
            if(j.ne.0)then
              if(f11.le.60.0d0)then
                f=f+f11/3600.0d0
              endif
            endif
          endif
        endif
      else
!18.27 type of character
        f=0.0d0
        do i=ipos1,ideci-1
          c=astring(i:i)
          f=f+dble(ichar(c)-48)*
     &         dble(10**(ideci-ipos1-(i-ipos1)-1))
        enddo
        do i=ideci+1,ipos2
          c=astring(i:i)
          f=f+dble(ichar(c)-48)/dble(10**(i-ideci))
        enddo
      endif
      if(index(astring,'-').ne.0)then
        f=-f
      endif
      return
      end
