Hello Community, I am writing some program in SAS, where I would like to define a arbitrarily long list of parameters by a %LET statement: %let Countries = US, DE, IT; I would like to keep the definition of parameters as simple and convenient as possible, as later on different users will use this code ... To handle the parameters later in the code, I basically need to things: A string like US_DE_IT for naming data sets. A string like 'US', 'DE', 'IT' to place it in a WHERE statement. If possible, I would like to NOT do it via a macro but work with %LET and %SYSFUNC. For point 1, I was able to do so via: %let strCountries = %sysfunc(compress(%sysfunc(tranwrd(%quote(&Countries),%quote(,),_)))); et voilà: %put &strCountries;
US_DE_IT For point 2, my idea was to take &strCountries (US_DE_IT) and replace _ with ', ' and add a leading and trailing '. I think this should result in: 'US', 'DE', 'IT'... Code for "in beween" ',' looks as follows: %let listCountries = %sysfunc(tranwrd(&strCountries,_,', ')); If a run this a get an error, stating: NOTE 49-169: The meaning of an identifier after a quoted string may change in a future SAS release. Inserting white space between a quoted string and the succeeding identifier is recommended. What do I need to do? Any suggestions how I could point 1 and 2 done? Thank you!
... View more