<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>topic Re: Add single quotes to a %let varlist in SAS Programming</title>
    <link>https://communities.sas.com/t5/SAS-Programming/Add-single-quotes-to-a-let-varlist/m-p/869865#M343601</link>
    <description>&lt;P&gt;How did you create that list in the first place? If not manually, the quote function makes it easy to add quotes when creating macro variables.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;proc sql noprint;

select quote(name, "'") into :name_list separated by " "
from sashelp.class;&lt;BR /&gt;
quit;

%put &amp;amp;name_list.;
&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
    <pubDate>Fri, 14 Apr 2023 17:45:02 GMT</pubDate>
    <dc:creator>Reeza</dc:creator>
    <dc:date>2023-04-14T17:45:02Z</dc:date>
    <item>
      <title>Add single quotes to a %let varlist</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Add-single-quotes-to-a-let-varlist/m-p/869856#M343597</link>
      <description>&lt;P&gt;I am using SAS Enterprise Guide 8.3&lt;/P&gt;
&lt;P&gt;I created a varlist and I need to add quotes around each member of the list.&lt;/P&gt;
&lt;P&gt;From: %let varlist = 0001 0002 0003 ... 99999;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;to: %let newvarlist= '0001'&amp;nbsp; '0002'&amp;nbsp; '0003' ... '99999';&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;My goal is to do something similar to the following. PD is a character variable.&amp;nbsp;&lt;/P&gt;
&lt;P&gt;data&amp;nbsp; new;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; set old;&lt;/P&gt;
&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; if pd in (%varlist) then newvar=1;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; else newvar=0;&lt;/P&gt;
&lt;P&gt;run;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;I have tried a few solutions posted on the community and I keep getting error messages.&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Method 1:&amp;nbsp;&lt;/P&gt;
&lt;P&gt;data new;&lt;/P&gt;
&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; set old;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if index(" &amp;amp;varlist", ' ' || strip(var1) || ' ') then do;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;newvar=1;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;end;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;run;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;Warning message: Apparent invocation of&amp;nbsp;&amp;amp;varlist not resolved.&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;The Frequency table of newvar has all obs missing.&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;Method 2&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;%let varlist=aaaaa bbbbb ccccc zzzzz;&lt;/P&gt;
&lt;P&gt;%let varlist_quotes=%nrbquote(')%qsysfunc(prxchange(s/\s+/%nrbquote(' ')/oi,-1,&amp;amp;varlist))%nrbquote(');&lt;/P&gt;
&lt;P&gt;%put varlist_quotes: %bquote(&amp;amp;varlist_quotes);&lt;/P&gt;
&lt;P&gt;Error message:&lt;/P&gt;
&lt;P&gt;Closing delimiter"/" not found after replacement text "s/\s' ' oi".&lt;/P&gt;
&lt;P&gt;The regular expression passed to the function PRXCHANGE contains a syntax error.&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Any help provided would be appreciated.&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Fri, 14 Apr 2023 17:25:33 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Add-single-quotes-to-a-let-varlist/m-p/869856#M343597</guid>
      <dc:creator>ajb</dc:creator>
      <dc:date>2023-04-14T17:25:33Z</dc:date>
    </item>
    <item>
      <title>Re: Add single quotes to a %let varlist</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Add-single-quotes-to-a-let-varlist/m-p/869860#M343599</link>
      <description>&lt;P&gt;Try the %qlist macro from&amp;nbsp;&lt;A href="https://github.com/sasutils/macros/blob/master/qlist.sas" target="_blank" rel="noopener"&gt;https://github.com/sasutils/macros/blob/master/qlist.sas&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;And then you don't have to write your own code&lt;/P&gt;</description>
      <pubDate>Fri, 14 Apr 2023 17:43:54 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Add-single-quotes-to-a-let-varlist/m-p/869860#M343599</guid>
      <dc:creator>PaigeMiller</dc:creator>
      <dc:date>2023-04-14T17:43:54Z</dc:date>
    </item>
    <item>
      <title>Re: Add single quotes to a %let varlist</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Add-single-quotes-to-a-let-varlist/m-p/869864#M343600</link>
      <description>&lt;P&gt;Hi&amp;nbsp;&lt;a href="https://communities.sas.com/t5/user/viewprofilepage/user-id/17666"&gt;@ajb&lt;/a&gt;&amp;nbsp;,&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;One way to do is creating macro variable using PROC SQL into clause. See the example below:&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data have;
length varlist  $ 12;
input varlist;
cards;
0001 
0002 
0003 
99999
; 
proc print;run; 

proc sql;
	select distinct compress(quote(varlist))
		into: varlist separated by ','
		 from have;
	%put &amp;amp;=varlist;
quit; &lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;The result, all id values put in macro variable with proper quotations.&lt;BR /&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Capture.PNG" style="width: 0px;"&gt;&lt;img src="https://communities.sas.com/t5/image/serverpage/image-id/82699i801D4F4A74EA9EBE/image-size/small?v=v2&amp;amp;px=200" width="0" height="0" role="button" title="Capture.PNG" alt="Capture.PNG" /&gt;&lt;/span&gt;&lt;BR /&gt;&lt;BR /&gt;Testing:&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data test;
	set have;
	if varlist in (&amp;amp;varlist) then flag=1;
	else flag=0;
proc print;run; &lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Capture.PNG" style="width: 146px;"&gt;&lt;img src="https://communities.sas.com/t5/image/serverpage/image-id/82700iD18FC83D7CD9F73B/image-size/large?v=v2&amp;amp;px=999" role="button" title="Capture.PNG" alt="Capture.PNG" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Fri, 14 Apr 2023 17:45:32 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Add-single-quotes-to-a-let-varlist/m-p/869864#M343600</guid>
      <dc:creator>A_Kh</dc:creator>
      <dc:date>2023-04-14T17:45:32Z</dc:date>
    </item>
    <item>
      <title>Re: Add single quotes to a %let varlist</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Add-single-quotes-to-a-let-varlist/m-p/869865#M343601</link>
      <description>&lt;P&gt;How did you create that list in the first place? If not manually, the quote function makes it easy to add quotes when creating macro variables.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;proc sql noprint;

select quote(name, "'") into :name_list separated by " "
from sashelp.class;&lt;BR /&gt;
quit;

%put &amp;amp;name_list.;
&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Fri, 14 Apr 2023 17:45:02 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Add-single-quotes-to-a-let-varlist/m-p/869865#M343601</guid>
      <dc:creator>Reeza</dc:creator>
      <dc:date>2023-04-14T17:45:02Z</dc:date>
    </item>
    <item>
      <title>Re: Add single quotes to a %let varlist</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Add-single-quotes-to-a-let-varlist/m-p/869871#M343602</link>
      <description>&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;filename qlist url 'https://raw.githubusercontent.com/sasutils/macros/master/qlist.sas';
%include  qlist;

%let varlist = 0001 0002 0003 99999; 

%let my_list= %qlist(&amp;amp;varlist., paren=0, comma=0, delimit=, dsd = 0, quote=1);

%put &amp;amp;my_list.;&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Fri, 14 Apr 2023 17:53:30 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Add-single-quotes-to-a-let-varlist/m-p/869871#M343602</guid>
      <dc:creator>Reeza</dc:creator>
      <dc:date>2023-04-14T17:53:30Z</dc:date>
    </item>
    <item>
      <title>Re: Add single quotes to a %let varlist</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Add-single-quotes-to-a-let-varlist/m-p/869968#M343636</link>
      <description>&lt;PRE&gt;%let varlist = 0001 0002 0003 99999; 

%let newvarlist= %sysfunc(prxchange(s/(\w+)/'\1'/,-1,&amp;amp;varlist.));

%put &amp;amp;=newvarlist;&lt;/PRE&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Ksharp_0-1681554830889.png" style="width: 400px;"&gt;&lt;img src="https://communities.sas.com/t5/image/serverpage/image-id/82726iFDFF3CF1FFF1D1C7/image-size/medium?v=v2&amp;amp;px=400" role="button" title="Ksharp_0-1681554830889.png" alt="Ksharp_0-1681554830889.png" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Sat, 15 Apr 2023 10:34:05 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Add-single-quotes-to-a-let-varlist/m-p/869968#M343636</guid>
      <dc:creator>Ksharp</dc:creator>
      <dc:date>2023-04-15T10:34:05Z</dc:date>
    </item>
    <item>
      <title>Re: Add single quotes to a %let varlist</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Add-single-quotes-to-a-let-varlist/m-p/870004#M343641</link>
      <description>&lt;P&gt;Good idea, but don't add the COMPRESS() function unless your intent is to create a macro variable with values that are DIFFERENT from the values in the source dataset.&lt;/P&gt;
&lt;P&gt;But since SAS ignores trailing spaces in string comparisons you could use TRIM() to make the generated variable shorter.&amp;nbsp; Also depending on the values and where you use the macro variable you might want to use single quotes around the strings to prevent the macro processor from trying to process any &amp;amp; or % characters that might be in the strings.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;proc sql noprint;
select distinct quote(trim(variable),"'")
  into :varlist separated by ','
  from have
;
quit;
%put &amp;amp;=sqlobs &amp;amp;=varlist;&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Sat, 15 Apr 2023 17:14:23 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Add-single-quotes-to-a-let-varlist/m-p/870004#M343641</guid>
      <dc:creator>Tom</dc:creator>
      <dc:date>2023-04-15T17:14:23Z</dc:date>
    </item>
    <item>
      <title>Re: Add single quotes to a %let varlist</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Add-single-quotes-to-a-let-varlist/m-p/870053#M343656</link>
      <description>&lt;P&gt;Hi&amp;nbsp;&lt;a href="https://communities.sas.com/t5/user/viewprofilepage/user-id/17666"&gt;@ajb&lt;/a&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Another solution.&amp;nbsp;Note that &amp;amp;varlist gets a leading and trailing quote&amp;nbsp;&lt;STRONG&gt;before&lt;/STRONG&gt; the tranwrd function is applied. I works anyway, but gives annoying warning notes if done outside tranwrd.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;%let varlist = aaaaa bbbbb ccccc zzzzz;
%let newvarlist= %sysfunc(tranwrd(%str(%')&amp;amp;varlist%str(%'),%str( ),%str(' ')))%str(%');
%put &amp;amp;=newvarlist;&lt;/CODE&gt;&lt;/PRE&gt;
&lt;PRE&gt;23   %let varlist = aaaaa bbbbb ccccc zzzzz;
24   %let newvarlist= %sysfunc(tranwrd(%str(%')&amp;amp;varlist%str(%'),%str( ),%str(' ')));
25   %put &amp;amp;=newvarlist;
NEWVARLIST='aaaaa' 'bbbbb' 'ccccc' 'zzzzz'


&lt;/PRE&gt;</description>
      <pubDate>Sun, 16 Apr 2023 13:21:45 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Add-single-quotes-to-a-let-varlist/m-p/870053#M343656</guid>
      <dc:creator>ErikLund_Jensen</dc:creator>
      <dc:date>2023-04-16T13:21:45Z</dc:date>
    </item>
    <item>
      <title>Re: Add single quotes to a %let varlist</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Add-single-quotes-to-a-let-varlist/m-p/870056#M343657</link>
      <description>&lt;P&gt;&lt;a href="https://communities.sas.com/t5/user/viewprofilepage/user-id/17666"&gt;@ajb&lt;/a&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;I typically would do this&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;
%Let varlist = 0001 0002 0003 ... 99999;
%let newvarlist = %str(%')%qsysfunc(tranwrd(&amp;amp;varlist, %str( ), %str(%',%') ) )%str(%'); 
data  new; 
      set old;
      if pd in (%unquote(&amp;amp;newvarlist)) then newvar=1;  /* The %unquote() is needed to avoid errors */
      else newvar=0;
run; &lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;Hope this helps&lt;/P&gt;</description>
      <pubDate>Sun, 16 Apr 2023 13:34:57 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Add-single-quotes-to-a-let-varlist/m-p/870056#M343657</guid>
      <dc:creator>AhmedAl_Attar</dc:creator>
      <dc:date>2023-04-16T13:34:57Z</dc:date>
    </item>
    <item>
      <title>Re: Add single quotes to a %let varlist</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Add-single-quotes-to-a-let-varlist/m-p/870068#M343666</link>
      <description>&lt;P&gt;You could use&amp;nbsp;zipEvalf macro from the BasePlus package.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Here are the steps:&lt;/P&gt;
&lt;P&gt;1) install SAS Packages Framework and the BasePlus Package:&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;filename packages "%sysfunc(pathname(work))"; /* setup WORK as temporary directory for packages (you can change it to permanent directory) */
filename SPFinit url "https://raw.githubusercontent.com/yabwon/SAS_PACKAGES/main/SPF/SPFinit.sas";
%include SPFinit;
%installPackage(SPFinit)  /* install SAS Packages Framework */
%installPackage(basePlus) /* install basePlus package */
&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;2) read help for the zipEvalf macro and load the macro into the session:&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;%helpPackage(basePlus, zipEvalf)    /* get help about the zipEvalf macro from the basePlus package */

%loadPackage(basePlus, cherryPick=zipEvalf)    /* load the zipEvalf macro of the basePlus package content into the SAS session */
&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;3) Run the code:&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;%let varlist = 0001 0002 0003 ... 99999;
%put Before: &amp;amp;=varlist; 
%let varlist = %zipEvalf(&amp;amp;varlist., %str(%'), function=Quote);
%put After: &amp;amp;=varlist;&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;Log:&lt;/P&gt;
&lt;PRE&gt;1    %let varlist = 0001 0002 0003 ... 99999;
2    %put Before: &amp;amp;=varlist;
Before: VARLIST=0001 0002 0003 ... 99999
3    %let varlist = %zipEvalf(&amp;amp;varlist., %str(%'), function=Quote);
4    %put After: &amp;amp;=varlist;
After: VARLIST='0001' '0002' '0003' '...' '99999'&lt;/PRE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Links:&lt;/P&gt;
&lt;P&gt;a) SAS Packages Framework:&amp;nbsp;&lt;A href="https://github.com/yabwon/SAS_PACKAGES" target="_blank"&gt;https://github.com/yabwon/SAS_PACKAGES&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;b) BasePlus packages:&amp;nbsp;&lt;A href="https://github.com/SASPAC/baseplus" target="_blank"&gt;https://github.com/SASPAC/baseplus&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Bart&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Sun, 16 Apr 2023 16:29:06 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Add-single-quotes-to-a-let-varlist/m-p/870068#M343666</guid>
      <dc:creator>yabwon</dc:creator>
      <dc:date>2023-04-16T16:29:06Z</dc:date>
    </item>
  </channel>
</rss>

