<?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: Masking % but allow &amp;amp; in SAS Programming</title>
    <link>https://communities.sas.com/t5/SAS-Programming/Masking-but-allow-amp/m-p/460004#M116889</link>
    <description>&lt;P&gt;By default, %SCAN uses percent signs as delimiters:&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;A href="https://v8doc.sas.com/sashtml/macro/z514scan.htm" target="_blank"&gt;https://v8doc.sas.com/sashtml/macro/z514scan.htm&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;To change that, specify that blank is the only delimiter:&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;%let next_name = %scan(&amp;amp;x, &amp;amp;i, %str( ) ) ;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Now generating %test% might cause its own set of problems.&amp;nbsp; You might want to switch from %scan to %qscan if there are problems.&lt;/P&gt;</description>
    <pubDate>Fri, 04 May 2018 11:35:57 GMT</pubDate>
    <dc:creator>Astounding</dc:creator>
    <dc:date>2018-05-04T11:35:57Z</dc:date>
    <item>
      <title>Masking % but allow &amp;</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Masking-but-allow-amp/m-p/459972#M116873</link>
      <description>&lt;P&gt;Hi,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;i have a Problem with my Code.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;FONT color="#000080" face="Courier New" size="3"&gt;&lt;STRONG&gt;%macro&lt;/STRONG&gt;&lt;/FONT&gt;&lt;FONT face="Courier New" size="3"&gt; &lt;STRONG&gt;&lt;I&gt;print2&lt;/I&gt;&lt;/STRONG&gt;;&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT color="#0000ff" face="Courier New" size="3"&gt;%let&lt;/FONT&gt;&lt;FONT face="Courier New" size="3"&gt; x = %test% %test2%;&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT color="#0000ff" face="Courier New" size="3"&gt;%let&lt;/FONT&gt;&lt;FONT face="Courier New" size="3"&gt; myvar=&lt;/FONT&gt;&lt;FONT color="#0000ff" face="Courier New" size="3"&gt;%str&lt;/FONT&gt;&lt;FONT face="Courier New" size="3"&gt;('%'); &lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;　&lt;/P&gt;&lt;P&gt;&lt;FONT color="#0000ff" face="Courier New" size="3"&gt;%local&lt;/FONT&gt;&lt;FONT face="Courier New" size="3"&gt; i next_name;&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT color="#0000ff" face="Courier New" size="3"&gt;%do&lt;/FONT&gt;&lt;FONT face="Courier New" size="3"&gt; i=&lt;/FONT&gt;&lt;STRONG&gt;&lt;FONT color="#008080" face="Courier New" size="3"&gt;1&lt;/FONT&gt;&lt;/STRONG&gt; &lt;FONT color="#0000ff" face="Courier New" size="3"&gt;%to&lt;/FONT&gt; &lt;FONT color="#0000ff" face="Courier New" size="3"&gt;%sysfunc&lt;/FONT&gt;&lt;FONT face="Courier New" size="3"&gt;(countw(&amp;amp;x));&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT color="#0000ff" face="Courier New" size="3"&gt;%let&lt;/FONT&gt;&lt;FONT face="Courier New" size="3"&gt; next_name = &lt;/FONT&gt;&lt;FONT color="#0000ff" face="Courier New" size="3"&gt;%scan&lt;/FONT&gt;&lt;FONT face="Courier New" size="3"&gt;(&amp;amp;x, &amp;amp;i);&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT color="#0000ff" face="Courier New" size="3"&gt;%put&lt;/FONT&gt;&lt;FONT face="Courier New" size="3"&gt; &amp;amp;next_name;&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT color="#0000ff" face="Courier New" size="3"&gt;%end&lt;/FONT&gt;&lt;FONT face="Courier New" size="3"&gt;;&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;　&lt;/P&gt;&lt;P&gt;&lt;FONT color="#000080" face="Courier New" size="3"&gt;&lt;STRONG&gt;%mend&lt;/STRONG&gt;&lt;/FONT&gt;&lt;FONT face="Courier New" size="3"&gt; print2;&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;%&lt;STRONG&gt;&lt;I&gt;print2&lt;/I&gt;&lt;/STRONG&gt;;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;the ouput is :&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;test&lt;/P&gt;&lt;P&gt;test2&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;but i Need this Output&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;%test%&lt;/P&gt;&lt;P&gt;%test2%&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Fri, 04 May 2018 09:43:19 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Masking-but-allow-amp/m-p/459972#M116873</guid>
      <dc:creator>Specter</dc:creator>
      <dc:date>2018-05-04T09:43:19Z</dc:date>
    </item>
    <item>
      <title>Re: Masking % but allow &amp;</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Masking-but-allow-amp/m-p/459982#M116882</link>
      <description>&lt;P&gt;The question is why, can yoou give a working example of what you want.&amp;nbsp; As soon as I see lots of %'s &amp;amp;'s %str() masking and such like, I can guarentee you there is an easier way of doing what you want with simple coding.&lt;/P&gt;</description>
      <pubDate>Fri, 04 May 2018 10:05:46 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Masking-but-allow-amp/m-p/459982#M116882</guid>
      <dc:creator>RW9</dc:creator>
      <dc:date>2018-05-04T10:05:46Z</dc:date>
    </item>
    <item>
      <title>Re: Masking % but allow &amp;</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Masking-but-allow-amp/m-p/460004#M116889</link>
      <description>&lt;P&gt;By default, %SCAN uses percent signs as delimiters:&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;A href="https://v8doc.sas.com/sashtml/macro/z514scan.htm" target="_blank"&gt;https://v8doc.sas.com/sashtml/macro/z514scan.htm&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;To change that, specify that blank is the only delimiter:&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;%let next_name = %scan(&amp;amp;x, &amp;amp;i, %str( ) ) ;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Now generating %test% might cause its own set of problems.&amp;nbsp; You might want to switch from %scan to %qscan if there are problems.&lt;/P&gt;</description>
      <pubDate>Fri, 04 May 2018 11:35:57 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Masking-but-allow-amp/m-p/460004#M116889</guid>
      <dc:creator>Astounding</dc:creator>
      <dc:date>2018-05-04T11:35:57Z</dc:date>
    </item>
    <item>
      <title>Re: Masking % but allow &amp;</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Masking-but-allow-amp/m-p/460008#M116891</link>
      <description>&lt;P&gt;Once again, the futility of lists in macro variables.&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data list;
input string $20.;
put string;
cards;
%test%
%test2%
;
run;&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;Anything you want to do can be done off that dataset with call execute.&lt;/P&gt;</description>
      <pubDate>Fri, 04 May 2018 11:47:47 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Masking-but-allow-amp/m-p/460008#M116891</guid>
      <dc:creator>Kurt_Bremser</dc:creator>
      <dc:date>2018-05-04T11:47:47Z</dc:date>
    </item>
    <item>
      <title>Re: Masking % but allow &amp;</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Masking-but-allow-amp/m-p/460083#M116931</link>
      <description>&lt;BLOCKQUOTE&gt;&lt;HR /&gt;&lt;a href="https://communities.sas.com/t5/user/viewprofilepage/user-id/166070"&gt;@Specter&lt;/a&gt; wrote:&lt;BR /&gt;
&lt;P&gt;Hi,&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;i have a Problem with my Code.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;FONT color="#000080" face="Courier New" size="3"&gt;&lt;STRONG&gt;%macro&lt;/STRONG&gt;&lt;/FONT&gt;&lt;FONT face="Courier New" size="3"&gt; &lt;STRONG&gt;&lt;I&gt;print2&lt;/I&gt;&lt;/STRONG&gt;;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT color="#0000ff" face="Courier New" size="3"&gt;%let&lt;/FONT&gt;&lt;FONT face="Courier New" size="3"&gt; x = %test% %test2%;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT color="#0000ff" face="Courier New" size="3"&gt;%let&lt;/FONT&gt;&lt;FONT face="Courier New" size="3"&gt; myvar=&lt;/FONT&gt;&lt;FONT color="#0000ff" face="Courier New" size="3"&gt;%str&lt;/FONT&gt;&lt;FONT face="Courier New" size="3"&gt;('%'); &lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;　&lt;/P&gt;
&lt;P&gt;&lt;FONT color="#0000ff" face="Courier New" size="3"&gt;%local&lt;/FONT&gt;&lt;FONT face="Courier New" size="3"&gt; i next_name;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT color="#0000ff" face="Courier New" size="3"&gt;%do&lt;/FONT&gt;&lt;FONT face="Courier New" size="3"&gt; i=&lt;/FONT&gt;&lt;STRONG&gt;&lt;FONT color="#008080" face="Courier New" size="3"&gt;1&lt;/FONT&gt;&lt;/STRONG&gt; &lt;FONT color="#0000ff" face="Courier New" size="3"&gt;%to&lt;/FONT&gt; &lt;FONT color="#0000ff" face="Courier New" size="3"&gt;%sysfunc&lt;/FONT&gt;&lt;FONT face="Courier New" size="3"&gt;(countw(&amp;amp;x));&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT color="#0000ff" face="Courier New" size="3"&gt;%let&lt;/FONT&gt;&lt;FONT face="Courier New" size="3"&gt; next_name = &lt;/FONT&gt;&lt;FONT color="#0000ff" face="Courier New" size="3"&gt;%scan&lt;/FONT&gt;&lt;FONT face="Courier New" size="3"&gt;(&amp;amp;x, &amp;amp;i);&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT color="#0000ff" face="Courier New" size="3"&gt;%put&lt;/FONT&gt;&lt;FONT face="Courier New" size="3"&gt; &amp;amp;next_name;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT color="#0000ff" face="Courier New" size="3"&gt;%end&lt;/FONT&gt;&lt;FONT face="Courier New" size="3"&gt;;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;　&lt;/P&gt;
&lt;P&gt;&lt;FONT color="#000080" face="Courier New" size="3"&gt;&lt;STRONG&gt;%mend&lt;/STRONG&gt;&lt;/FONT&gt;&lt;FONT face="Courier New" size="3"&gt; print2;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;%&lt;STRONG&gt;&lt;I&gt;print2&lt;/I&gt;&lt;/STRONG&gt;;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;the ouput is :&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;test&lt;/P&gt;
&lt;P&gt;test2&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;but i Need this Output&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;%test%&lt;/P&gt;
&lt;P&gt;%test2%&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;HR /&gt;&lt;/BLOCKQUOTE&gt;
&lt;P&gt;You&amp;nbsp;need to quote the value of X.&amp;nbsp; This will suppress the first group of&amp;nbsp;invocation notes in the log.&lt;/P&gt;
&lt;P&gt;WARNING: Apparent invocation of macro TEST not resolved. Then as mentioned by &lt;a href="https://communities.sas.com/t5/user/viewprofilepage/user-id/4954"&gt;@Astounding&lt;/a&gt;&amp;nbsp;use QSCAN with blank as delimiter, this will suppress the other invocation notes and return the proper values.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt; 55         
 56         %macro print2;
 57            %let x = %nrstr(%%test%% %%test2%%);
 58         
 59            %local i next_name;
 60            %do i=1 %to %sysfunc(countw(&amp;amp;x));
 61               %let next_name = %qscan(&amp;amp;x,&amp;amp;i,%str( ));
 62               %put &amp;amp;next_name;
 63               %end;
 64            %mend print2;
 65         
 66         %print2;
 %test%
 %test2%
 67         
 68       
&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Fri, 04 May 2018 15:22:10 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Masking-but-allow-amp/m-p/460083#M116931</guid>
      <dc:creator>data_null__</dc:creator>
      <dc:date>2018-05-04T15:22:10Z</dc:date>
    </item>
  </channel>
</rss>

