SUBROUTINE AP_IFSP ( rimnem, cimnem, iret ) C************************************************************************ C* AP_IFSP * C* * C* This subroutine initializes the interface mnemonic arrays and sets * C* the pointers within COMMON / RINTFP / and COMMON / CINTFP /. * C* * C* AP_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* J. Ator/NCEP 10/08 * C* J. Ator/NCEP 08/11 Add processing of STATYPE as BUFR A4ME * C************************************************************************ INCLUDE 'GEMPRM.PRM' INCLUDE 'apcmn.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' , 'AVGMIN', 'STATYPE', + 'GSW1' , 'GSW2' , 'GSW3' , + 'NLVL' , + 'LVLTYP', + 'HGTM' , + 'DRCT' , 'DRCTQA', 'DRCTQR', + 'SPED' , 'SPEDQA', 'SPEDQR', + 'UDEV' , 'VDEV' , + 'WCMP' , 'WDEV' , + 'VTMP' , 'VTMPQA', 'VTMPQR', + MLM1TF * ' ' / C* Real interface mnemonics C* DATA ( cifmn ( i ), i = 1, NCIMN ) + / 'STID' , 'PRVID' , + 'DRCTQD', 'SPEDQD', 'VTMPQD', + MLM1T3 * ' ' / 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 ) C C* Set the pointers for the multi-level interface mnemonics. C CALL DC_IFFP ( 'NLVL' , rimnem, NRIMN, allok, irnlvl, ier ) C CALL DC_IFFP ( 'LVLTYP', rimnem, NRIMN, allok, + irltyp (1) , ier ) CALL DC_IFMP ( 15, MXLVLS, irltyp, ier ) C CALL DC_IFFP ( 'HGTM' , rimnem, NRIMN, allok, + irhgtm (1) , ier ) CALL DC_IFMP ( 15, MXLVLS, irhgtm, ier ) C CALL DC_IFFP ( 'DRCT' , rimnem, NRIMN, allok, + irdrct (1) , ier ) CALL DC_IFMP ( 15, MXLVLS, irdrct, ier ) CALL DC_IFFP ( 'DRCTQA', rimnem, NRIMN, allok, + irdrctqa (1), ier ) CALL DC_IFMP ( 15, MXLVLS, irdrctqa, ier ) CALL DC_IFFP ( 'DRCTQR', rimnem, NRIMN, allok, + irdrctqr (1), ier ) CALL DC_IFMP ( 15, MXLVLS, irdrctqr, ier ) CALL DC_IFFP ( 'DRCTQD', cimnem, NCIMN, allok, + icdrctqd (1), ier ) CALL DC_IFMP ( 3, MXLVLS, icdrctqd, ier ) C CALL DC_IFFP ( 'SPED' , rimnem, NRIMN, allok, + irsped (1) , ier ) CALL DC_IFMP ( 15, MXLVLS, irsped, ier ) CALL DC_IFFP ( 'SPEDQA', rimnem, NRIMN, allok, + irspedqa (1), ier ) CALL DC_IFMP ( 15, MXLVLS, irspedqa, ier ) CALL DC_IFFP ( 'SPEDQR', rimnem, NRIMN, allok, + irspedqr (1), ier ) CALL DC_IFMP ( 15, MXLVLS, irspedqr, ier ) CALL DC_IFFP ( 'SPEDQD', cimnem, NCIMN, allok, + icspedqd (1), ier ) CALL DC_IFMP ( 3, MXLVLS, icspedqd, ier ) C CALL DC_IFFP ( 'UDEV' , rimnem, NRIMN, allok, + irudev (1) , ier ) CALL DC_IFMP ( 15, MXLVLS, irudev, ier ) C CALL DC_IFFP ( 'VDEV' , rimnem, NRIMN, allok, + irvdev (1) , ier ) CALL DC_IFMP ( 15, MXLVLS, irvdev, ier ) C CALL DC_IFFP ( 'WCMP' , rimnem, NRIMN, allok, + irwcmp (1) , ier ) CALL DC_IFMP ( 15, MXLVLS, irwcmp, ier ) C CALL DC_IFFP ( 'WDEV' , rimnem, NRIMN, allok, + irwdev (1) , ier ) CALL DC_IFMP ( 15, MXLVLS, irwdev, ier ) C CALL DC_IFFP ( 'VTMP' , rimnem, NRIMN, allok, + irvtmp (1) , ier ) CALL DC_IFMP ( 15, MXLVLS, irvtmp, ier ) CALL DC_IFFP ( 'VTMPQA', rimnem, NRIMN, allok, + irvtmpqa (1), ier ) CALL DC_IFMP ( 15, MXLVLS, irvtmpqa, ier ) CALL DC_IFFP ( 'VTMPQR', rimnem, NRIMN, allok, + irvtmpqr (1), ier ) CALL DC_IFMP ( 15, MXLVLS, irvtmpqr, ier ) CALL DC_IFFP ( 'VTMPQD', cimnem, NCIMN, allok, + icvtmpqd (1), ier ) CALL DC_IFMP ( 3, MXLVLS, icvtmpqd, ier ) C C* Were all of the pointers properly set? C IF ( .not. allok ) THEN iret = -1 END IF C* RETURN END