THANKS TOM! From that I was able to get something working, and much of what I want is in it. %macro FindParseAfter (Where2Start, OutVarName, VarName=URL, Number2Keep=1, BegParse=_temp, LenVar=_length); if find(&VarName,&Where2Start) then do; &LenVar = find(&VarName, &Where2Start)+lengthc(&Where2Start); &BegParse = substr(&VarName,&LenVar,360); if find(&BegParse, '&') then do; &OutVarName = scan(&BegParse,&Number2Keep,'&'); end; else if find(&BegParse, '?') then do; &OutVarName = scan(&BegParse,&Number2Keep,'?'); end; else if find(&BegParse, '#') then do; &OutVarName = scan(&BegParse,&Number2Keep,'#'); end; else if find(&BegParse, '/') then do; &OutVarName = scan(&BegParse,&Number2Keep,'/'); end; else &OutVarName = &BegParse; end; drop _temp _length %mend; It would be nice if there were only 2 lines of parsing code, and I used some kind of END macro variable. That way if the ending symbols changed to works, or different symbols, or more symbols.... it would only be a matter of changing the EndChar macro variable definition. But that's ok. This is useable code and I can start learning regular expression, then go from there. Thanks again to everyone!
... View more