SUBROUTINE CN_IFSP  ( rimnem, cimnem, iret )
C************************************************************************
C* CN_IFSP								*
C*									*
C* This subroutine initializes the interface mnemonic arrays and sets   *
C* the pointers within COMMON / RINTFP / and COMMON / CINTFP /.		*
C*									*
C* CN_IFSP  ( RIMNEM, CIMNEM, IRET )					*
C*									*
C* Output parameters:							*
C*	RIMNEM (*)	CHAR*		Interface mnemonics for reals   *
C*	CIMNEM (*)	CHAR*		Interface mnemonics for chars   *
C*	IRET		INTEGER		Return code 			*
C*					  0 = normal return 		*
C*					 -1 = one or more pointers	*
C*					      could not be set 		*
C*									*
C**									*
C* Log:									*
C* S. Guan/NCEP		12/11						*
C************************************************************************
	INCLUDE		'GEMPRM.PRM'
	INCLUDE		'cncmn.cmn'
C*
	CHARACTER*(*)	rimnem (*), cimnem (*)
C*
	LOGICAL		allok
	INTEGER		iploc ( NRSIMN )
	CHARACTER	rifmn ( NRIMN )*8, cifmn ( NCIMN )*8
C*
C*	Establish equivalence between iploc ( ) and COMMON / RINTFP /
C*
	EQUIVALENCE	( iploc (1), iryear )
C*
	DATA	( rifmn ( i ), i = 1, NRIMN )
     +  /   'YEAR'  , 'MNTH'  , 'DAYS'  , 'HOUR'  , 'MINU'  ,
     +	    'SLAT'  , 'SLON'  , 'SELV'  , 'PLTP'  , 'GUDR'  , 'GUMS'  , 
     +	    'TMPK'  , 'TMPKQA', 'TMPKQR', 'RELH'  , 'RELHQA', 'RELHQR',
     +	    'DRCT'  , 'DRCTQA', 'DRCTQR', 'SPED'  , 'SPEDQA', 'SPEDQR',
     +	    'RPCP'  , 'RPCPQA', 'RPCPQR', 'SRDF'  , 'SRDFQA', 'SRDFQR',
     +	    'NPCP'  , 'TPMI'  , 'TPHR'  , 'TPCP'  , 'TPCPQA', 'TPCPQR',
     +		        MPM1T5 * ' '	,
     +      'NSOL1' , 'SLIN1' ,
     +                'SOLM1' ,
     +                'SOLMQA1', 'SOLMQR1',
     +                'SOLT1'  ,
     +                'SOLTQA1', 'SOLTQR1',
     +                 MLM1T7 * ' '    ,
     +      'NSOL2' , 'SLIN2' ,
     +                'SOLM2' ,
     +                'SOLMQA2', 'SOLMQR2',
     +                'SOLT2'  ,
     +                'SOLTQA2', 'SOLTQR2',
     +                 MLM1T7 * ' '    ,
     +      'NSOL3' , 'SLIN3' ,
     +                'SOLM3' ,
     +                'SOLMQA3', 'SOLMQR3',
     +                'SOLT3'  ,
     +                'SOLTQA3', 'SOLTQR3',
     +                 MLM1T7 * ' '    /
C*					Real interface mnemonics 
C*
	DATA	( cifmn ( i ), i = 1, NCIMN )
     +	/   'STID'  , 'PRVID' , 
     +	    'TMPKQD', 'RELHQD', 'DRCTQD', 'SPEDQD',
     +	    'RPCPQD', 'SRDFQD', 'TPCPQD', MPM1 * ' ',
     +      'SOLMQD1', MSLM1 * ' ',
     +      'SOLTQD1', MSLM1 * ' ',
     +      'SOLMQD2', MSLM1 * ' ',
     +      'SOLTQD2', MSLM1 * ' ',
     +      'SOLMQD3', MSLM1 * ' ',
     +      'SOLTQD3', MSLM1 * ' '  /

C*					Character interface mnemonics 
C-----------------------------------------------------------------------
	iret = 0
C
C*	Initialize the interface mnemonics.
C
	DO i = 1, NRIMN
	    rimnem ( i ) = rifmn ( i )
	END DO
	DO i = 1, NCIMN
	    cimnem ( i ) = cifmn ( i )
	END DO 
C
C*	The logical variable "allok" is initially set to .true. but will
C*	be reset to .false. if any of the pointers cannot be set.
C
	allok = .true.
C
C*	Set the pointers for the single-level interface mnemonics.
C
	DO ii = 1, NRSIMN
	    CALL DC_IFFP  ( rimnem (ii), rimnem, NRIMN, allok,
     +			    iploc (ii), ier ) 
	END DO
C
	CALL DC_IFFP  ( 'STID'  , cimnem, NCIMN, allok, icstid  , ier )
	CALL DC_IFFP  ( 'PRVID' , cimnem, NCIMN, allok, icprvid , ier )
	CALL DC_IFFP  ( 'TMPKQD', cimnem, NCIMN, allok, ictmpkqd, ier )
	CALL DC_IFFP  ( 'RELHQD', cimnem, NCIMN, allok, icrelhqd, ier )
	CALL DC_IFFP  ( 'DRCTQD', cimnem, NCIMN, allok, icdrctqd, ier )
	CALL DC_IFFP  ( 'SPEDQD', cimnem, NCIMN, allok, icspedqd, ier )
	CALL DC_IFFP  ( 'RPCPQD', cimnem, NCIMN, allok, icrpcpqd, ier )
        CALL DC_IFFP  ( 'SRDFQD', cimnem, NCIMN, allok, icsrdfqd, ier )
C
C*	Set the pointers for the multi-level interface mnemonics.
C
	CALL DC_IFFP  ( 'NPCP'  , rimnem, NRIMN, allok, irnpcp, ier )
	CALL DC_IFFP  ( 'TPHR'  , rimnem, NRIMN, allok,
     +			irtphr (1)  , ier )
	CALL DC_IFMP  ( 5, MXPCP, irtphr, ier )
        CALL DC_IFFP  ( 'TPMI'  , rimnem, NRIMN, allok,
     +                  irtpmi (1)  , ier )
        CALL DC_IFMP  ( 5, MXPCP, irtpmi, ier )
        CALL DC_IFFP  ( 'TPCP'  , rimnem, NRIMN, allok,
     +                  irtpcp (1)  , ier )
	CALL DC_IFMP  ( 5, MXPCP, irtpcp, ier )
	CALL DC_IFFP  ( 'TPCPQA', rimnem, NRIMN, allok,
     +			irtpcpqa (1), ier )
	CALL DC_IFMP  ( 5, MXPCP, irtpcpqa, ier )
	CALL DC_IFFP  ( 'TPCPQR', rimnem, NRIMN, allok,
     +			irtpcpqr (1), ier )
	CALL DC_IFMP  ( 5, MXPCP, irtpcpqr, ier )
	CALL DC_IFFP  ( 'TPCPQD', cimnem, NCIMN, allok,
     +			ictpcpqd (1), ier )
	CALL DC_IFMP  ( 1, MXPCP, ictpcpqd, ier )
C
        CALL DC_IFFP  ( 'NSOL1'  , rimnem, NRIMN, allok, irnsol1, ier )
        CALL DC_IFFP  ( 'SLIN1'  , rimnem, NRIMN, allok,
     +                  irslin1 (1)  , ier )
        CALL DC_IFMP  ( 7, MXSOL, irslin1, ier )
        CALL DC_IFFP  ( 'SOLM1'  , rimnem, NRIMN, allok,
     +                  irsolm1 (1)  , ier )
        CALL DC_IFMP  ( 7, MXSOL, irsolm1, ier )
        CALL DC_IFFP  ( 'SOLMQA1', rimnem, NRIMN, allok,
     +                  irsolmqa1 (1), ier )
        CALL DC_IFMP  ( 7, MXSOL, irsolmqa1, ier )
        CALL DC_IFFP  ( 'SOLMQR1', rimnem, NRIMN, allok,
     +                  irsolmqr1 (1), ier )
        CALL DC_IFMP  ( 7, MXSOL, irsolmqr1, ier )
        CALL DC_IFFP  ( 'SOLMQD1', cimnem, NCIMN, allok,
     +                  icsolmqd1 (1), ier )
        CALL DC_IFMP  ( 1, MXSOL, icsolmqd1, ier )
        CALL DC_IFFP  ( 'SOLT1'  , rimnem, NRIMN, allok,
     +                  irsolt1 (1)  , ier )
        CALL DC_IFMP  ( 7, MXSOL, irsolt1, ier )
        CALL DC_IFFP  ( 'SOLTQA1', rimnem, NRIMN, allok,
     +                  irsoltqa1 (1), ier )
        CALL DC_IFMP  ( 7, MXSOL, irsoltqa1, ier )
        CALL DC_IFFP  ( 'SOLTQR1', rimnem, NRIMN, allok,
     +                  irsoltqr1 (1), ier )
        CALL DC_IFMP  ( 7, MXSOL, irsoltqr1, ier )
        CALL DC_IFFP  ( 'SOLTQD1', cimnem, NCIMN, allok,
     +                  icsoltqd1 (1), ier )
        CALL DC_IFMP  ( 1, MXSOL, icsoltqd1, ier )
C
        CALL DC_IFFP  ( 'NSOL2'  , rimnem, NRIMN, allok, irnsol2, ier )
        CALL DC_IFFP  ( 'SLIN2'  , rimnem, NRIMN, allok,
     +                  irslin2 (1)  , ier )
        CALL DC_IFMP  ( 7, MXSOL, irslin2, ier )
        CALL DC_IFFP  ( 'SOLM2'  , rimnem, NRIMN, allok,
     +                  irsolm2 (1)  , ier )
        CALL DC_IFMP  ( 7, MXSOL, irsolm2, ier )
        CALL DC_IFFP  ( 'SOLMQA2', rimnem, NRIMN, allok,
     +                  irsolmqa2 (1), ier )
        CALL DC_IFMP  ( 7, MXSOL, irsolmqa2, ier )
        CALL DC_IFFP  ( 'SOLMQR2', rimnem, NRIMN, allok,
     +                  irsolmqr2 (1), ier )
        CALL DC_IFMP  ( 7, MXSOL, irsolmqr2, ier )
        CALL DC_IFFP  ( 'SOLMQD2', cimnem, NCIMN, allok,
     +                  icsolmqd2 (1), ier )
        CALL DC_IFMP  ( 1, MXSOL, icsolmqd2, ier )
        CALL DC_IFFP  ( 'SOLT2'  , rimnem, NRIMN, allok,
     +                  irsolt2 (1)  , ier )
        CALL DC_IFMP  ( 7, MXSOL, irsolt2, ier )
        CALL DC_IFFP  ( 'SOLTQA2', rimnem, NRIMN, allok,
     +                  irsoltqa2 (1), ier )
        CALL DC_IFMP  ( 7, MXSOL, irsoltqa2, ier )
        CALL DC_IFFP  ( 'SOLTQR2', rimnem, NRIMN, allok,
     +                  irsoltqr2 (1), ier )
        CALL DC_IFMP  ( 7, MXSOL, irsoltqr2, ier )
        CALL DC_IFFP  ( 'SOLTQD2', cimnem, NCIMN, allok,
     +                  icsoltqd2 (1), ier )
        CALL DC_IFMP  ( 1, MXSOL, icsoltqd2, ier )
C
        CALL DC_IFFP  ( 'NSOL3'  , rimnem, NRIMN, allok, irnsol3, ier )
        CALL DC_IFFP  ( 'SLIN3'  , rimnem, NRIMN, allok,
     +                  irslin3 (1)  , ier )
        CALL DC_IFMP  ( 7, MXSOL, irslin3, ier )
        CALL DC_IFFP  ( 'SOLM3'  , rimnem, NRIMN, allok,
     +                  irsolm3 (1)  , ier )
        CALL DC_IFMP  ( 7, MXSOL, irsolm3, ier )
        CALL DC_IFFP  ( 'SOLMQA3', rimnem, NRIMN, allok,
     +                  irsolmqa3 (1), ier )
        CALL DC_IFMP  ( 7, MXSOL, irsolmqa3, ier )
        CALL DC_IFFP  ( 'SOLMQR3', rimnem, NRIMN, allok,
     +                  irsolmqr3 (1), ier )
        CALL DC_IFMP  ( 7, MXSOL, irsolmqr3, ier )
        CALL DC_IFFP  ( 'SOLMQD3', cimnem, NCIMN, allok,
     +                  icsolmqd3 (1), ier )
        CALL DC_IFMP  ( 1, MXSOL, icsolmqd3, ier )
        CALL DC_IFFP  ( 'SOLT3'  , rimnem, NRIMN, allok,
     +                  irsolt3 (1)  , ier )
        CALL DC_IFMP  ( 7, MXSOL, irsolt3, ier )
        CALL DC_IFFP  ( 'SOLTQA3', rimnem, NRIMN, allok,
     +                  irsoltqa3 (1), ier )
        CALL DC_IFMP  ( 7, MXSOL, irsoltqa3, ier )
        CALL DC_IFFP  ( 'SOLTQR3', rimnem, NRIMN, allok,
     +                  irsoltqr3 (1), ier )
        CALL DC_IFMP  ( 7, MXSOL, irsoltqr3, ier )
        CALL DC_IFFP  ( 'SOLTQD3', cimnem, NCIMN, allok,
     +                  icsoltqd3 (1), ier )
        CALL DC_IFMP  ( 1, MXSOL, icsoltqd3, ier )
C
C*	Were all of the pointers properly set?
C
	IF  ( .not. allok ) THEN
	    iret = -1
	END IF
C*
	RETURN
	END