FUNCTION CH_IFIND(KBUFRN,KPARM,CDSTNID) 1,1
C
      IMPLICIT NONE
C
      INTEGER KBUFRN,CH_IFIND,KPARM
      CHARACTER*(*) CDSTNID
C
#if defined (DOC)
************************************************************************
*
*      PURPOSE: TO FIND THE INDEX OF A BUFR ELEMENT NUMBER IN THE CMA
*               VARIABLE TYPES LIST FOR 'TR' FAMILY ONLY.
*
*    ARGUMENTS:
*               INPUT:
*                      -KBUFRN: THE BUFR ELEMENT NUMBER
*                      -KPARM : Species if number or 0 for dynamics
*                      -CDSTNID:Station/instrument ID. 
*                               Equals ' ' if irrelevant.
*
*               OUTPUT:
*                      - IFIND: THE FOUND INDEX (=-1 IF NOT FOUND)
*
*       AUTHOR: Y.J. Rochon *ARQX/MSC June 2005
*               Extension of IFIND by P. KOCLAS (CMC TEL. 4665)
*       Revision:
*               Y. Yang Oct. 2003
*                  -  Changed 'DO IN=1,57' to 'DO IN=1,jpnbrelem' to make
*                     it general (change to IFIND).
*               Y.J. Rochon June 2005, Feb 2006
*                  - Added comparison with list of species descriptor elements
*                  - Added KPARM and test on KPARM 
*                  - Added CDSTNID and test with CTRSTNID
*              Y.J. Rochon August 2010
*                  - Replaced test with use of CH_KGETPOS.
*
************************************************************************
#endif
C
#include "comnumbr.cdk"
#include "comdim.cdk"
#include "comchem.cdk"
C
      INTEGER IN,INJ,CH_KGETPOS
      EXTERNAL CH_KGETPOS
C
      CH_IFIND=-1
      DO IN=1,jpnbrelem
         IF ( NVNUMB(IN) .EQ. KBUFRN ) THEN
            IF (CH_KGETPOS(KBUFRN,KPARM,CDSTNID).GT.0) THEN
               CH_IFIND=IN
               RETURN
            END IF
        ENDIF
      END DO
C
      RETURN
      END