<?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: Macro with single quotes in SAS Programming</title>
    <link>https://communities.sas.com/t5/SAS-Programming/Macro-with-single-quotes/m-p/51375#M10742</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;If you need to eliminate some I/O then you can actually create all of the datasets in a single pass.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;PRE __default_attr="plain" __jive_macro_name="code" class="jive_text_macro jive_macro_code"&gt;&lt;P&gt;data %do i=1 %to &amp;amp;count; new&amp;amp;i %end; ;&lt;/P&gt;&lt;P&gt;&amp;nbsp; set Fact;&lt;/P&gt;&lt;P&gt;%do i=1 %to &amp;amp;count;&lt;/P&gt;&lt;P&gt;&amp;nbsp; if Fact_name=%scan(&amp;amp;nm,&amp;amp;i,*) then output new&amp;amp;i;&lt;/P&gt;&lt;P&gt;%end;&lt;/P&gt;&lt;P&gt;run;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;/PRE&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Sat, 31 Mar 2012 12:28:37 GMT</pubDate>
    <dc:creator>Tom</dc:creator>
    <dc:date>2012-03-31T12:28:37Z</dc:date>
    <item>
      <title>Macro with single quotes</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Macro-with-single-quotes/m-p/51371#M10738</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi there,&lt;/P&gt;&lt;P&gt;My task is to create individual datasets from the variable of my dimension. However I am facing issue with values which has single quotes... Please find the code below &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Data Dimension;&lt;/P&gt;&lt;P&gt;input Name $40.;&lt;/P&gt;&lt;P&gt;datalines;&lt;/P&gt;&lt;P&gt;property&lt;/P&gt;&lt;P&gt;worker's compensation&lt;/P&gt;&lt;P&gt;calamity&lt;/P&gt;&lt;P&gt;Life's data&lt;/P&gt;&lt;P&gt;;&lt;/P&gt;&lt;P&gt;run;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Proc sql;&lt;/P&gt;&lt;P&gt;select distinct Name into : nm separated by '*' from dimension;&lt;/P&gt;&lt;P&gt;select count distinct(Name) into :count from dimension;&lt;/P&gt;&lt;P&gt;QUIT;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;%Macro m1;&lt;/P&gt;&lt;P&gt;%do i=1 %to count1;&lt;/P&gt;&lt;H5&gt;%let nm1=%scan(%superquote(nm),&amp;amp;i,'*');&lt;/H5&gt;&lt;P&gt;data new&amp;amp;i;&lt;/P&gt;&lt;P&gt;set Fact;&lt;/P&gt;&lt;P&gt;where Fact_name="&amp;amp;nm1";&lt;/P&gt;&lt;P&gt;run;&lt;/P&gt;&lt;P&gt;%end;&lt;/P&gt;&lt;P&gt;%mend;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;%m1;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Here my nm1 resolves for property but not for worker's compensation... has anybody encountered any problem like this before... any help is really appreciated...&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Sat, 31 Mar 2012 05:55:41 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Macro-with-single-quotes/m-p/51371#M10738</guid>
      <dc:creator>forumsguy</dc:creator>
      <dc:date>2012-03-31T05:55:41Z</dc:date>
    </item>
    <item>
      <title>Macro with single quotes</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Macro-with-single-quotes/m-p/51372#M10739</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;I found several problems in your code.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;PRE&gt;data fact;
input fact_Name $40.;
datalines;
property
worker's compensation
calamity
Life's data
;
run;



Data Dimension;
input Name $40.;
datalines;
property
worker's compensation
calamity
Life's data
;
run;

 

Proc sql;
select distinct Name into : nm separated by '*' from dimension;
select count (distinct Name) into :count from dimension;
QUIT;


%Macro m1;
%do i=1 %to &amp;amp;count;
%let nm1=%qscan(%bquote(&amp;amp;nm),&amp;amp;i,*); 
data new&amp;amp;i;
set Fact;
where Fact_name="&amp;amp;nm1";
run;
%end;
%mend;

 

%m1

&lt;/PRE&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Ksharp&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Sat, 31 Mar 2012 07:25:03 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Macro-with-single-quotes/m-p/51372#M10739</guid>
      <dc:creator>Ksharp</dc:creator>
      <dc:date>2012-03-31T07:25:03Z</dc:date>
    </item>
    <item>
      <title>Macro with single quotes</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Macro-with-single-quotes/m-p/51373#M10740</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;It is a simpler solution.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;PRE&gt;data fact;
input fact_Name $40.;
datalines;
property
worker's compensation
calamity
Life's data
;
run;



Data Dimension;
input Name $40.;
datalines;
property
worker's compensation
calamity
Life's data
;
run;

data _null_;
 set dimension;
 call execute(cats('data new',_n_,'; set fact; where fact_name="',name,'";run;'));
run;


&lt;/PRE&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Ksharp&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Sat, 31 Mar 2012 07:38:49 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Macro-with-single-quotes/m-p/51373#M10740</guid>
      <dc:creator>Ksharp</dc:creator>
      <dc:date>2012-03-31T07:38:49Z</dc:date>
    </item>
    <item>
      <title>Re: Macro with single quotes</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Macro-with-single-quotes/m-p/51374#M10741</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;The QUOTE() function helps eliminate the need for macro quoting in situations like this.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;PRE __default_attr="plain" __jive_macro_name="code" class="jive_text_macro jive_macro_code"&gt;&lt;P&gt;proc sql noprint ;&lt;/P&gt;&lt;P&gt;&amp;nbsp; select distinct quote(trim(name)) into : nm separated by '*' from dimension;&lt;/P&gt;&lt;P&gt;%let count=&amp;amp;sqlobs;&lt;/P&gt;&lt;P&gt;quit;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;%do i=1 %to &amp;amp;count;&lt;/P&gt;&lt;P&gt;data new&amp;amp;i;&lt;/P&gt;&lt;P&gt;&amp;nbsp; set Fact;&lt;/P&gt;&lt;P&gt;&amp;nbsp; where Fact_name=%scan(&amp;amp;nm,&amp;amp;i,*);&lt;/P&gt;&lt;P&gt;run;&lt;/P&gt;&lt;P&gt;%end;&lt;/P&gt;&lt;/PRE&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Sat, 31 Mar 2012 12:21:10 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Macro-with-single-quotes/m-p/51374#M10741</guid>
      <dc:creator>Tom</dc:creator>
      <dc:date>2012-03-31T12:21:10Z</dc:date>
    </item>
    <item>
      <title>Re: Macro with single quotes</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Macro-with-single-quotes/m-p/51375#M10742</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;If you need to eliminate some I/O then you can actually create all of the datasets in a single pass.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;PRE __default_attr="plain" __jive_macro_name="code" class="jive_text_macro jive_macro_code"&gt;&lt;P&gt;data %do i=1 %to &amp;amp;count; new&amp;amp;i %end; ;&lt;/P&gt;&lt;P&gt;&amp;nbsp; set Fact;&lt;/P&gt;&lt;P&gt;%do i=1 %to &amp;amp;count;&lt;/P&gt;&lt;P&gt;&amp;nbsp; if Fact_name=%scan(&amp;amp;nm,&amp;amp;i,*) then output new&amp;amp;i;&lt;/P&gt;&lt;P&gt;%end;&lt;/P&gt;&lt;P&gt;run;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;/PRE&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Sat, 31 Mar 2012 12:28:37 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Macro-with-single-quotes/m-p/51375#M10742</guid>
      <dc:creator>Tom</dc:creator>
      <dc:date>2012-03-31T12:28:37Z</dc:date>
    </item>
    <item>
      <title>Re: Macro with single quotes</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Macro-with-single-quotes/m-p/51376#M10743</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi Tom,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;why "&lt;CODE class="jive-code"&gt;if Fact_name=%scan(&amp;amp;nm,&amp;amp;i,*) then output new&amp;amp;i;"&lt;/CODE&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;not&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;CODE class="jive-code"&gt;"if Fact_name=%scan(&amp;amp;nm,&amp;amp;i,"*") then output new&amp;amp;i;" (it doesn't work) ?&lt;/CODE&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Thank you!&amp;nbsp; - Linlin&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Sat, 31 Mar 2012 13:00:02 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Macro-with-single-quotes/m-p/51376#M10743</guid>
      <dc:creator>Linlin</dc:creator>
      <dc:date>2012-03-31T13:00:02Z</dc:date>
    </item>
    <item>
      <title>Re: Macro with single quotes</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Macro-with-single-quotes/m-p/51377#M10744</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;In macro code everything is a string. So you do not need to quotes things. And if you do the quotes become part of the string.&lt;/P&gt;&lt;P&gt;In this case the it will break if you include the quotes in the delimiter list for the %SCAN() function. Instead of generating &lt;/P&gt;&lt;P&gt;&amp;nbsp; fact_name="Life's data"&lt;/P&gt;&lt;P&gt;it would generate&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; fact_name=Life's data&lt;/P&gt;&lt;P&gt;Which would both have unbalanced single quotes and be invalid SAS syntax.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Sat, 31 Mar 2012 15:12:50 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Macro-with-single-quotes/m-p/51377#M10744</guid>
      <dc:creator>Tom</dc:creator>
      <dc:date>2012-03-31T15:12:50Z</dc:date>
    </item>
    <item>
      <title>Re: Macro with single quotes</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Macro-with-single-quotes/m-p/51378#M10745</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Thank you Tom!&amp;nbsp; I will try to remember that.&amp;nbsp;&amp;nbsp; - Linlin&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Sat, 31 Mar 2012 17:07:32 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Macro-with-single-quotes/m-p/51378#M10745</guid>
      <dc:creator>Linlin</dc:creator>
      <dc:date>2012-03-31T17:07:32Z</dc:date>
    </item>
  </channel>
</rss>

