INTEGER FUNCTION IBFMS ( R8VAL ) C$$$ SUBPROGRAM DOCUMENTATION BLOCK C C SUBPROGRAM: IBFMS C PRGMMR: J. ATOR ORG: NP12 DATE: 2007-01-19 C C ABSTRACT: THIS FUNCTION TESTS WHETHER THE INPUT VALUE IS EQUIVALENT C TO THE BUFR ARCHIVE LIBRARY "MISSING" VALUE. THE COMPARISON IS C MADE USING A FUZZINESS THRESHOLD TO ENSURE THAT REAL NUMBERS ARE C NOT TESTED FOR ACTUAL EQUALITY TO EACH OTHER. THE USE OF INTEGER C RETURN CODES ALLOWS THIS FUNCTION TO BE CALLED IN A LOGICAL C CONTEXT FROM A CALLING PROGRAM WRITTEN IN C. C C PROGRAM HISTORY LOG: C 2007-01-19 J. ATOR -- ORIGINAL AUTHOR C C USAGE: IBFMS ( R8VAL ) C INPUT ARGUMENT LIST: C R8VAL - REAL*8: VALUE TO BE TESTED FOR EQUIVALENCE TO C BUFR ARCHIVE LIBRARY "MISSING" VALUE C C OUTPUT ARGUMENT LIST: C IBFMS - INTEGER: RETURN CODE: C 0 - R8VAL IS NOT EQUIVALENT TO "MISSING" C 1 - R8VAL IS EQUIVALENT TO "MISSING" C C REMARKS: C THIS ROUTINE CALLS: None C THIS ROUTINE IS CALLED BY: INVMRG UFBDMP UFBRW UFDUMP C WRTREE C Also called by application programs. C C ATTRIBUTES: C LANGUAGE: FORTRAN 77 C MACHINE: PORTABLE TO ALL PLATFORMS C C$$$ INCLUDE 'bufrlib.prm' REAL*8 R8VAL C The following parameter defines the fuzziness threshold to use C when testing for BUFR "missing". REAL*8 BDIFD PARAMETER ( BDIFD = 100. ) C---------------------------------------------------------------------- C---------------------------------------------------------------------- IF ( ABS ( R8VAL - BMISS ) .LT. BDIFD ) THEN IBFMS = 1 ELSE IBFMS = 0 END IF RETURN END