Hi, I need to extract the variable names from the given macro variable &var (which is not working well using prxposn), then test if they are empty. If it is the case so I need to delete the separator (slash / in this case) and obtain an empty column in the output instead of that separator alone when the variables are empty and the concatenation result should be stored in the variable code. The below approach is based on prx expressions since I don't have a control on the variable name that will be mentioned in the macro variable &var used as input (it happens that the variable name contains digits and it should be the ones before and after <>). The concatenation result should be stored in the variable code %let var = [aeterm9] aedecod </@2> aeterm ; /*here aedecod and aeterm are two variables included in the dataset adae, but we could replace them by other ones*/ data want; set adae ; patternID1=prxparse("/(\[(\w+)\])?\s*(\w*)/"); /* define a pattern for <Separator1DigitsSeparator2> Variable2 */ patternID2=prxparse("/<([^<>0-9]*)(\d*)([^<>0-9]*)>\s*(\w*)/"); /* define a pattern for matched braces ')' or '(' */ patternID3=prxparse("/<[^a-zA-Z\<\>]*(\(|\))[^a=zA-Z\<\>]*\>/"); do i=1 to 2; test1= scan("[aeterm9] aedecod </@2> aeterm" , i , '<>' ) ; test2=prxposn(patternID1,3,test1); end; varlist= test2 ; if test2ne '' and test2 ne '.' then do; code=cats('strip(put(',test2,',',vformatx(test2),'))'); label=vlabelx(test2); end; else do; code=''; label=''; end; run; Hope I have clarified enough the problem and thanks in advance for your help.
... View more