nTagNum=ASCAN(atags,theTag) cTagExpr=KEY(nTagNum) && Get the Key * NSL 07/02/01 * Found bug that included incorrect tags when there was a field that was a substr of another field * Ex strnum and ownerstnum - user wanted ownerstnum, and prog displayed strnum in addition. *cTagExpr=CHRTRAN(cTagExpr,'+-() ',replicate(' ',5)) && AP proposed 07/02/01 - prev this line not there * NSL 07/02/01 Changed to only convert the plus. Negatives not usually in an index and the parens cause other problems cTagExpr=CHRTRAN(cTagExpr,'+(), ',replicate(' ',5)) && NSL 07/02/01 - added comma for functions in certain keys *-------------------------------------------------------------------------- * -- Get all the fields that match with a CDX index tag *-------------------------------------------------------------------------- DIMENSION laFieldInTag[1,2] lnZ=0 FOR lnX=1 TO ALEN(laFieldNames,1) *IF laFieldNames[lnX]$cTagExpr && Is this field name contained in the tag expression? IF ' '+laFieldNames[lnX]+' '$cTagExpr && Is this field name contained in the tag expression? && AP proposed 07/02/01 * If it is contained, then list it. * replaces prev commented out line. lnZ=lnZ+1 DIMENSION laFieldInTag[lnZ,2] laFieldInTag[lnZ,1]=laFieldNames[lnX] laFieldInTag[lnZ,2]=AT(laFieldNames[lnX],cTagExpr) && Save the start position ENDIF ENDFORBTW, I see a bug in this code. This line IF ' '+laFieldNames[lnX]+' '$cTagExpr
IF ' '+laFieldNames[lnX]+' '$" "+cTagExpr+" ">>No, but you can use fcount() and field() in a FOR loop to figure out what fieldnames are in the KEY().
>>lparameter tcExpression >>local lcFields >>for lnI = 1 to fcount() >> if at(field(lnI), upper(tcExpression)) >> if not empty(lcFields) >> lcFields = lcFields + ',' >> endif >> lcFields = lcFields + field(lnI) >> endif >>endfor >>return lcFields>>