SUBROUTINE CX_GTBB ( nsdcr, mxdatv, sortdesc, iret ) C************************************************************************ C* CX_GTBB * C* * C* This subroutine gets the CREX Table B data for the descriptors in * C* the current CREX message and save these data in the appropriate * C* arrays. * C* * C* CX_GTBB ( NSDCR, MXDATV, SORTDESC, IRET ) * C* * C* Input parameters: * C* NTBLBRC INTEGER Number of Table B records * C* NSDCR INTEGER Number of sorted descriptors in * C* array sortdesc * C* MXDATV INTEGER Maximum number of data values * C* expected * C* SORTDESC CHAR* List of unique descriptors in * C* expdesc sorted in ascending * C* order * C* * C* Output parameters: * C* NCHRS (100) INTEGER Descriptor data width * C* MUNITS (100) CHAR* Descriptor units * C* MSC (100) INTEGER Descriptor scaling value * C* IRET INTEGER Return code * C* 0 = normal return * C* 1 = fatal error * C* * C** * C* Log: * C* R. Hollern/NCEP 8/03 * C************************************************************************ INCLUDE 'cxcmn.cmn' C* INTEGER ntblbrc C* CHARACTER sortdesc ( mxdatv )*6 CHARACTER mdescr*6 C------------------------------------------------------------------------ iret = 0 ic01flg = 0 C C* Character width of data value. C DO j = 1, nsdcr C C* Locate descriptor in Table B. C mdescr = sortdesc(j) C CALL DC_BSRC ( mdescr, elmdesc, ntblbrc, ilc, kret ) C IF ( ilc .gt. 0 ) THEN C C* Found a match. C IF ( ic01flg .eq. 0 ) THEN nchrs(j) = iwidth ( ilc ) ELSE C C* Data width change caused by operator descriptor. C nchrs(j) = jdatwth ENDIF C munits(j) = units( ilc ) msc(j) = iscale( ilc ) ELSE IF ( mdescr(1:1) .eq. 'R' ) THEN nchrs(j) = -1 munits(j) = '?' msc(j) = -1 ELSE IF ( mdescr(1:1) .eq. 'C' ) THEN nchrs(j) = -1 munits(j) = '?' msc(j) = -1 ELSE C C* Element descriptor not found in table. C iret = 1 loglvl = 2 logmsg = ' ' logmsg(1:19) = 'Element descriptor ' logmsg(20:25) = mdescr logmsg(26:53) = ' not found in CREX Table B ' CALL DC_WLOG( loglvl, 'CX', 2, logmsg, ierwlg ) logmsg = ' ' logmsg(1:12) = 'FATAL ERROR ' CALL DC_WLOG( loglvl, 'CX', 2, logmsg, ierwlg ) RETURN END IF C END DO C* RETURN END