If the accepted solution works to achieve your expected results, one recommendation I would make is regarding the "txt_b" line of logic. As it stands the logic used to populate the "txt_b" field excludes the characters pulled in the "C" field above it, except for the blank space. This in turn causes any spaces between the numeric value and the character value to remain. So when you have "100/50 mg medicine", the blank between '50' and 'mg' remains. So to clean this up without incorrectly removing the blank between the words 'mg' and 'medicine', we can use the STRIP FUNCTION. DATA WORK.Want;
SET WORK.Have;
c = COMPRESS(Txt,"0123456789.,/ ","K"); *K is to keep the chars you specified.;
txt_b = STRIP(COMPRESS(Txt,"0123456789.,/"));
RUN;
... View more