SUBROUTINE UA_IFSP ( rimnem, cimnem, iret ) C************************************************************************ C* UA_IFSP * C* * C* This subroutine initializes the interface mnemonic arrays and sets * C* the pointers within COMMON / RINTFP / and COMMON / CINTFP /. * C* * C* UA_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 12/97 * C* D. Kidwell/NCEP 10/98 Added init of interface mnemonics; * C* added intf mnemonics to calling sequence* C* J. Ator/NCEP 12/98 Added YEAR, MNTH to /INTF/ * C* J. Ator/NCEP 10/99 Change /INTF mnemonics for cloud data, * C* clean up function declarations * C* J. Ator/NCEP 01/02 Added TIWM to /INTF/, HOCB -> HBLCS * C************************************************************************ INCLUDE 'GEMPRM.PRM' INCLUDE 'uacmn.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), irstnm ) C* DATA ( rifmn (i), i = 1, NRIMN ) + / 'STNM' , 'SLAT' , 'SLON' , 'SELV' , 'QCEVR' , + 'UAITPD', 'UAITPR', 'A4ME' , 'MARSQ' , 'WMOR' , + 'UALNHR', 'UALNMN', 'SIRC' , 'TTSS' , 'SSTC' , + 'YEAR' , 'MNTH' , 'DAYS' , 'HOUR' , + 'MWDL' , 'MWSL' , 'MWDH' , 'MWSH' , + 'XMPRES', 'XMHGTM', 'STBS5' , 'TIWM' , + 'CLAM' , 'HBLCS' , + 'NCLT' , 'CLTP' , + MCM1 * ' ', + 'NRDC' , 'UARDC' , + MRM1 * ' ', + 'NLEV' , 'VSIG' , 'PRES' , 'HGTM' , 'TMPC' , 'DWPC' , + 'DRCT' , 'SPED' , 'AWSB' , 'AWSA' , + MLM1T9 * ' ' / C* Real interface mnemonics C* DATA ( cifmn (i), i = 1, NCIMN ) + / 'STID' , 'COUN' , 'UAPART' / 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 ( 'COUN', cimnem, NCIMN, allok, iccoun, ier ) CALL DC_IFFP ( 'UAPART', cimnem, NCIMN, allok, icpart, ier ) C C* Set the pointers for the multi-level interface mnemonics. C C* Cloud types. C CALL DC_IFFP ( 'NCLT', rimnem, NRIMN, allok, irnclt, ier ) CALL DC_IFFP ( 'CLTP', rimnem, NRIMN, allok, ircltp (1), ier ) CALL DC_IFMP ( 1, MXNCLT, ircltp, ier ) C C* Report diagnostic codes. C CALL DC_IFFP ( 'NRDC', rimnem, NRIMN, allok, irnrdc, ier ) CALL DC_IFFP ( 'UARDC', rimnem, NRIMN, allok, irurdc (1), ier ) CALL DC_IFMP ( 1, MXNRDC, irurdc, ier ) C C* Multi-level data. C CALL DC_IFFP ( 'NLEV', rimnem, NRIMN, allok, irnlev, ier ) CALL DC_IFFP ( 'VSIG', rimnem, NRIMN, allok, irvsig (1), ier ) CALL DC_IFMP ( 9, MXNLEV, irvsig, ier ) CALL DC_IFFP ( 'PRES', rimnem, NRIMN, allok, irpres (1), ier ) CALL DC_IFMP ( 9, MXNLEV, irpres, ier ) CALL DC_IFFP ( 'HGTM', rimnem, NRIMN, allok, irhgtm (1), ier ) CALL DC_IFMP ( 9, MXNLEV, irhgtm, ier ) CALL DC_IFFP ( 'TMPC', rimnem, NRIMN, allok, irtmpc (1), ier ) CALL DC_IFMP ( 9, MXNLEV, irtmpc, ier ) CALL DC_IFFP ( 'DWPC', rimnem, NRIMN, allok, irdwpc (1), ier ) CALL DC_IFMP ( 9, MXNLEV, irdwpc, ier ) CALL DC_IFFP ( 'DRCT', rimnem, NRIMN, allok, irdrct (1), ier ) CALL DC_IFMP ( 9, MXNLEV, irdrct, ier ) CALL DC_IFFP ( 'SPED', rimnem, NRIMN, allok, irsped (1), ier ) CALL DC_IFMP ( 9, MXNLEV, irsped, ier ) CALL DC_IFFP ( 'AWSB', rimnem, NRIMN, allok, irawsb (1), ier ) CALL DC_IFMP ( 9, MXNLEV, irawsb, ier ) CALL DC_IFFP ( 'AWSA', rimnem, NRIMN, allok, irawsa (1), ier ) CALL DC_IFMP ( 9, MXNLEV, irawsa, ier ) C C* Were all of the pointers properly set? C IF ( .not. allok ) THEN iret = -1 END IF C* RETURN END