<HTML> <BODY BGCOLOR=#ccccdd LINK=#0000aa VLINK=#0000ff ALINK=#ff0000 ><BASE TARGET="bottom_target"><PRE>
<A NAME='VALX'><A href='../../html_code/bufr/valx.f.html#VALX' TARGET='top_target'><IMG SRC="../../gif/bar_green.gif" border=0></A>
FUNCTION VALX(STR) 4
C$$$ SUBPROGRAM DOCUMENTATION BLOCK
C
C SUBPROGRAM: VALX
C PRGMMR: WOOLLEN ORG: NP20 DATE: 1994-01-06
C
C ABSTRACT: THIS FUNCTION DECODES A REAL NUMBER FROM A CHARACTER
C STRING. IF THE DECODE FAILS, THEN THE VALUE BMISS IS
C RETURNED. NOTE THAT, UNLIKE FOR SUBROUTINE STRNUM, THE INPUT
C STRING MAY CONTAIN A LEADING SIGN CHARACTER (E.G. '+', '-').
C
C PROGRAM HISTORY LOG:
C 1994-01-06 J. WOOLLEN -- ORIGINAL AUTHOR
C 1998-07-08 J. WOOLLEN -- REPLACED CALL TO CRAY LIBRARY ROUTINE
C "ABORT" WITH CALL TO NEW INTERNAL BUFRLIB
C ROUTINE "BORT"
<A NAME='FROM'><A href='../../html_code/bufr/valx.f.html#FROM' TARGET='top_target'><IMG SRC="../../gif/bar_green.gif" border=0></A>
C 1999-11-18 J. WOOLLEN -- RENAMED THIS FUNCTION FROM "VAL$" TO "VALX" 5,8
C TO REMOVE THE POSSIBILITY OF THE "$" SYMBOL
C CAUSING PROBLEMS ON OTHER PLATFORMS
C 2003-11-04 J. ATOR -- ADDED DOCUMENTATION
C 2003-11-04 S. BENDER -- ADDED REMARKS/BUFRLIB ROUTINE
C INTERDEPENDENCIES
C 2003-11-04 D. KEYSER -- UNIFIED/PORTABLE FOR WRF; ADDED HISTORY
C DOCUMENTATION; OUTPUTS MORE COMPLETE
C DIAGNOSTIC INFO WHEN ROUTINE TERMINATES
C ABNORMALLY; CHANGED CALL FROM BORT TO BORT2
C 2009-04-21 J. ATOR -- USE ERRWRT
C
C USAGE: VALX (STR)
C INPUT ARGUMENT LIST:
C STR - CHARACTER*(*): STRING CONTAINING ENCODED REAL VALUE
C
C OUTPUT ARGUMENT LIST:
C VALX - REAL: DECODED VALUE
C
C REMARKS:
C THIS ROUTINE CALLS: BORT2 ERRWRT RJUST
C THIS ROUTINE IS CALLED BY: GETTBH NEMTBB UPFTBV
C Normally not called by any application
C programs but it could be.
C
C ATTRIBUTES:
C LANGUAGE: FORTRAN 77
C MACHINE: PORTABLE TO ALL PLATFORMS
C
C$$$
INCLUDE 'bufrlib.prm'
CHARACTER*(*) STR
CHARACTER*128 BORT_STR1,BORT_STR2
CHARACTER*99 BSTR
CHARACTER*8 FMT
COMMON /QUIET / IPRT
C----------------------------------------------------------------------
C----------------------------------------------------------------------
LENS = LEN(STR)
IF(LENS.GT.99) GOTO 900
BSTR(1:LENS) = STR
RJ = RJUST
(BSTR(1:LENS))
WRITE(FMT,'(''(F'',I2,''.0)'')') LENS
VALX = BMISS
READ(BSTR,FMT,ERR=800) VAL
VALX = VAL
GOTO 100
800 IF(IPRT.GE.0) THEN
CALL ERRWRT
('+++++++++++++++++++++WARNING+++++++++++++++++++++++')
CALL ERRWRT
('BUFRLIB: VALX - ERROR READING STRING:')
CALL ERRWRT
(BSTR(1:LENS))
CALL ERRWRT
('RETURN WITH VALX = MISSING')
CALL ERRWRT
('+++++++++++++++++++++WARNING+++++++++++++++++++++++')
CALL ERRWRT
(' ')
ENDIF
C EXITS
C -----
100 RETURN
900 WRITE(BORT_STR1,'("STRING IS: ",A)') STR
WRITE(BORT_STR2,'("BUFRLIB: VALX - STRING LENGTH EXCEEDS LIMIT '//
. ' OF 99 CHARACTERS")')
CALL BORT2
(BORT_STR1,BORT_STR2)
END