SUBROUTINE EP_IFSP ( r8mnem, rimnem, iret ) C************************************************************************ C* EP_IFSP * C* * C* This subroutine initializes the interface mnemonics arrays and sets * C* the pointers within COMMON / RINTFP /. * C* * C* EP_IFSP ( R8MNEM, RIMNEM, IRET ) * C* * C* Output parameters: * C* R8MNEM(*) CHAR* Real*8 interface mnemonics * C* RIMNEM(*) CHAR* Real interface mnemonics * 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* J. Ator/NCEP 03/06 * C************************************************************************ INCLUDE 'GEMPRM.PRM' INCLUDE 'epcmn.cmn' C* CHARACTER*(*) r8mnem (*), rimnem (*) C* LOGICAL allok C* INTEGER iploc ( NRSIMN ) C* CHARACTER rifmn ( NR8IMN + NRIMN )*8 C* C* Establish equivalance between iploc ( ) and COMMON / RINTFP / C* EQUIVALENCE ( iploc (1), irwmob ) C* C* Real*8 and real interface mnemonics C* DATA ( rifmn (i), i = 1, ( NR8IMN + NRIMN ) ) + / 'MEFR' , + 'WMOB' , 'WMOS' , 'TOST' , 'SLAT' , 'SLON' , 'SELV' , + 'YEAR' , 'MNTH' , 'DAYS' , 'HOUR' , 'MINU' , + 'A4ME' , 'ATYP' , 'BEMW' , 'RAGL' , + 'MSPE' , 'WICE' , 'TSIG' , 'TPMI' , + 'NLEV' , 'HGTM' , 'QMDR' , + 'DRCT' , 'SPED' , + 'QMWC' , 'WCMP' , + 'STNR' , + MLM1TS * ' ' / C----------------------------------------------------------------------- iret = 0 C C* Initialize the real*8 interface mnemonics. C DO i = 1, NR8IMN r8mnem ( i ) = rifmn ( i ) END DO C C* Initialize the real interface mnemonics. C DO i = 1, NRIMN rimnem ( i ) = rifmn ( NR8IMN + 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 CALL DC_IFFP ( 'MEFR', r8mnem, NR8IMN, allok, irmefr, ier ) C DO ii = 1, NRSIMN CALL DC_IFFP ( rimnem (ii), rimnem, NRIMN, allok, + iploc (ii), ier ) END DO C C* Set the pointers for the multi-level interface mnemonics. C C* Multi-level data. C CALL DC_IFFP ( 'NLEV', rimnem, NRIMN, allok, irnlev, ier ) CALL DC_IFFP ( 'HGTM', rimnem, NRIMN, allok, irhgtm (1), ier ) CALL DC_IFMP ( 7, MXBFLV, irhgtm, ier ) CALL DC_IFFP ( 'QMDR', rimnem, NRIMN, allok, irqmdr (1), ier ) CALL DC_IFMP ( 7, MXBFLV, irqmdr, ier ) CALL DC_IFFP ( 'DRCT', rimnem, NRIMN, allok, irdrct (1), ier ) CALL DC_IFMP ( 7, MXBFLV, irdrct, ier ) CALL DC_IFFP ( 'SPED', rimnem, NRIMN, allok, irsped (1), ier ) CALL DC_IFMP ( 7, MXBFLV, irsped, ier ) CALL DC_IFFP ( 'QMWC', rimnem, NRIMN, allok, irqmwc (1), ier ) CALL DC_IFMP ( 7, MXBFLV, irqmwc, ier ) CALL DC_IFFP ( 'WCMP', rimnem, NRIMN, allok, irwcmp (1), ier ) CALL DC_IFMP ( 7, MXBFLV, irwcmp, ier ) CALL DC_IFFP ( 'STNR', rimnem, NRIMN, allok, irstnr (1), ier ) CALL DC_IFMP ( 7, MXBFLV, irstnr, ier ) C C* Were all of the pointers properly set? C IF ( .not. allok ) THEN iret = -1 END IF C* RETURN END