SUBROUTINE NX_IFSP ( rimnem, cimnem, iret ) C************************************************************************ C* NX_IFSP * C* * C* This subroutine sets the pointers within COMMON / RINTFP / and * C* COMMON / CINTFP /. * C* * C* NX_IFSP ( IRET ) * C* * C* Output parameters: * 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 04/98 * C* R. Hollern/NCEP 1/99 Added intf mnemonics to calling * C* sequence; Added init of interface mnem * C************************************************************************ INCLUDE 'GEMPRM.PRM' INCLUDE 'nxcmn.cmn' C* CHARACTER*(*) rimnem (*), cimnem (*) C* LOGICAL allok INTEGER iploc ( NRSIMN ) CHARACTER rifmn ( NRIMN )*8, cifmn ( NCIMN )*8 C* C* Establish equivalance 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' , + 'NPBW' , 'HGTM' , 'DRCT' , 'SKNT' , 'RMSE' , + MBM1T4 * ' ' / C* Real interface mnemonics C* DATA (cifmn (i), i = 1, NCIMN) + / 'RPID' / C* Character interface mnemonics C----------------------------------------------------------------------- iret = 0 C C* Initialize the interface mnemonics. C DO i = 1, NRIMN rimnem ( i ) = rifmn ( i ) END DO C 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 ( 'RPID', cimnem, NCIMN, allok, icrpid, ier ) C C* Set the pointers for the multi-level interface mnemonics. C CALL DC_IFFP ( 'NPBW', rimnem, NRIMN, allok, irnpbw, ier ) CALL DC_IFFP ( 'HGTM', rimnem, NRIMN, allok, irhgtm (1), ier ) CALL DC_IFMP ( 4, MXNPBW, irhgtm, ier ) CALL DC_IFFP ( 'DRCT', rimnem, NRIMN, allok, irdrct (1), ier ) CALL DC_IFMP ( 4, MXNPBW, irdrct, ier ) CALL DC_IFFP ( 'SKNT', rimnem, NRIMN, allok, irsknt (1), ier ) CALL DC_IFMP ( 4, MXNPBW, irsknt, ier ) CALL DC_IFFP ( 'RMSE', rimnem, NRIMN, allok, irrmse (1), ier ) CALL DC_IFMP ( 4, MXNPBW, irrmse, ier ) C C* Were all of the pointers properly set? C IF ( .not. allok ) THEN iret = -1 END IF C* RETURN END