<?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 Problem in SAS Programming</title>
    <link>https://communities.sas.com/t5/SAS-Programming/Macro-Problem/m-p/139462#M28142</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;My apology for providing you not exact example, actually program and dataset is very large, I would like to try to provide a portion of programe where i m facing issue.&lt;/P&gt;&lt;P&gt;here jobno, is number of unique subject&lt;/P&gt;&lt;P&gt;jlist is list of subject ie X|Y|Z|......&lt;/P&gt;&lt;P&gt;jobmax is largest one..&lt;/P&gt;&lt;P&gt;in bold where i m facing issue.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;%macro findjb();&lt;/P&gt;&lt;P&gt;%do i = 1 %to &amp;amp;jobno;&lt;/P&gt;&lt;P&gt;%let x= %scan(&amp;amp;jlist,&amp;amp;i,%str(|));&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;proc sort data = jobs_&amp;amp;jobmax; by hash state; run;&lt;/P&gt;&lt;P&gt;proc sort data = jobs_&amp;amp;x; by hash state; run;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;data comb;&lt;/P&gt;&lt;P&gt;merge jobs_&amp;amp;jobmax(in=var1) jobs_&amp;amp;x(in=var2);&lt;/P&gt;&lt;P&gt;by hash state;&lt;/P&gt;&lt;P&gt;if var1=0 and var2=1;&lt;/P&gt;&lt;P&gt;run;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;proc sql ;&lt;/P&gt;&lt;P&gt;select count(*) into :ctno from comb;&lt;/P&gt;&lt;P&gt;quit;&lt;/P&gt;&lt;P&gt;%put &amp;amp;ctno;&lt;/P&gt;&lt;P&gt;%if &amp;amp;z=1 and &amp;amp;ctno=0 %then %do;&lt;/P&gt;&lt;P&gt;%let jb= &amp;amp;x;&lt;/P&gt;&lt;P&gt;%let z=%eval(&amp;amp;z+1);&lt;/P&gt;&lt;P&gt;%put &amp;amp;jb;&lt;/P&gt;&lt;P&gt;%end;&lt;/P&gt;&lt;P&gt;%else %if &amp;amp;z ne 1 and &amp;amp;ctno =0 and &amp;amp;x ne &amp;amp;jobmax %then %do;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;%let jb= %sysfunc(cats(&amp;amp;jb,%str(|),&amp;amp;x));&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;%put &amp;amp;jb;&lt;/P&gt;&lt;P&gt;%end;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;%end;&lt;/P&gt;&lt;P&gt;%put &amp;amp;jb;&lt;/P&gt;&lt;P&gt;data finaljb;&lt;/P&gt;&lt;P&gt;set testjobs;&lt;/P&gt;&lt;P&gt;if jobboardid in (&amp;amp;jb);&lt;/P&gt;&lt;P&gt;run;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;%mend findjb;&lt;/P&gt;&lt;P&gt;%findjb;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Tue, 11 Mar 2014 14:12:46 GMT</pubDate>
    <dc:creator>Aman4SAS</dc:creator>
    <dc:date>2014-03-11T14:12:46Z</dc:date>
    <item>
      <title>Macro Problem</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Macro-Problem/m-p/139458#M28138</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi friends,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I am facing problem in using cats in macro i.e&lt;/P&gt;&lt;P&gt;when i m using this [below] its giving me correct result[here value of &amp;amp;x is being vary by do loop]&lt;/P&gt;&lt;P&gt;%let jb= %qsysfunc(cats(&amp;amp;jb,%str(,),&amp;amp;x));&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;But when i try to use: %let jb= %sysfunc(cats(&amp;amp;jb,%str(|),&amp;amp;x));&lt;/P&gt;&lt;P&gt;In this case result is only last variable. &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Can u please help me on this , I have solved by didnt use any function i.e : %let jb= &amp;amp;jb|&amp;amp;x; &lt;/P&gt;&lt;P&gt;But i m looking for solution with function.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Tue, 11 Mar 2014 13:20:35 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Macro-Problem/m-p/139458#M28138</guid>
      <dc:creator>Aman4SAS</dc:creator>
      <dc:date>2014-03-11T13:20:35Z</dc:date>
    </item>
    <item>
      <title>Re: Macro Problem</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Macro-Problem/m-p/139459#M28139</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;This works fine for me:&lt;/P&gt;&lt;P&gt;%let jb=eee|bbb;&lt;/P&gt;&lt;P&gt;%let x=ccc;&lt;/P&gt;&lt;P&gt;%let jb= %sysfunc(cats(&amp;amp;jb,%str(|),&amp;amp;x));&lt;/P&gt;&lt;P&gt;%put &amp;amp;jb.;&lt;/P&gt;&lt;P&gt;=eee|bbb|ccc&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Please supply and example with data as perhaps that is causing your issue (i.e. maybe quotes?).&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Tue, 11 Mar 2014 13:27:42 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Macro-Problem/m-p/139459#M28139</guid>
      <dc:creator>RW9</dc:creator>
      <dc:date>2014-03-11T13:27:42Z</dc:date>
    </item>
    <item>
      <title>Re: Macro Problem</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Macro-Problem/m-p/139460#M28140</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;data test;&lt;/P&gt;&lt;P&gt;input x $;&lt;/P&gt;&lt;P&gt;datalines;&lt;/P&gt;&lt;P&gt;a&lt;/P&gt;&lt;P&gt;b&lt;/P&gt;&lt;P&gt;c&lt;/P&gt;&lt;P&gt;d&lt;/P&gt;&lt;P&gt;e&lt;/P&gt;&lt;P&gt;f&lt;/P&gt;&lt;P&gt;g&lt;/P&gt;&lt;P&gt;;&lt;/P&gt;&lt;P&gt;run;&lt;/P&gt;&lt;P&gt;%let jb=;&lt;/P&gt;&lt;P&gt;data _null_;&lt;/P&gt;&lt;P&gt;set test;&lt;/P&gt;&lt;P&gt;if _n_=1 then; do;&lt;/P&gt;&lt;P&gt;call symput("x",x);&lt;/P&gt;&lt;P&gt;%let jb= %qsysfunc(cats(&amp;amp;jb,%str(,),&amp;amp;x));&lt;/P&gt;&lt;P&gt;end;&lt;/P&gt;&lt;P&gt;run;&lt;/P&gt;&lt;P&gt;%put &amp;amp;jb;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Tue, 11 Mar 2014 13:49:12 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Macro-Problem/m-p/139460#M28140</guid>
      <dc:creator>Aman4SAS</dc:creator>
      <dc:date>2014-03-11T13:49:12Z</dc:date>
    </item>
    <item>
      <title>Re: Macro Problem</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Macro-Problem/m-p/139461#M28141</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Ah, I see.&amp;nbsp; You can't do the %let statement in datasteps like that.&amp;nbsp; What you need is call symput, something like:&lt;/P&gt;&lt;P&gt;data test;&lt;BR /&gt;input x $;&lt;BR /&gt;datalines;&lt;BR /&gt;a&lt;BR /&gt;b&lt;BR /&gt;c&lt;BR /&gt;d&lt;BR /&gt;e&lt;BR /&gt;f&lt;BR /&gt;g&lt;BR /&gt;;&lt;BR /&gt;run;&lt;/P&gt;&lt;P&gt;data _null_;&lt;BR /&gt;&amp;nbsp; attrib lstx format=$2000.;&lt;BR /&gt;&amp;nbsp; set test end=last;&lt;BR /&gt;&amp;nbsp; retain lstx;&lt;BR /&gt;&amp;nbsp; if _n_=1 then lstx=x;&lt;BR /&gt;&amp;nbsp; else lstx=strip(lstx)||","||strip(x);&lt;BR /&gt;&amp;nbsp; if last then do;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; call symput('jb',lstx);&lt;BR /&gt;&amp;nbsp; end;&lt;BR /&gt;run;&lt;/P&gt;&lt;P&gt;%put &amp;amp;jb;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Tue, 11 Mar 2014 14:01:09 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Macro-Problem/m-p/139461#M28141</guid>
      <dc:creator>RW9</dc:creator>
      <dc:date>2014-03-11T14:01:09Z</dc:date>
    </item>
    <item>
      <title>Re: Macro Problem</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Macro-Problem/m-p/139462#M28142</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;My apology for providing you not exact example, actually program and dataset is very large, I would like to try to provide a portion of programe where i m facing issue.&lt;/P&gt;&lt;P&gt;here jobno, is number of unique subject&lt;/P&gt;&lt;P&gt;jlist is list of subject ie X|Y|Z|......&lt;/P&gt;&lt;P&gt;jobmax is largest one..&lt;/P&gt;&lt;P&gt;in bold where i m facing issue.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;%macro findjb();&lt;/P&gt;&lt;P&gt;%do i = 1 %to &amp;amp;jobno;&lt;/P&gt;&lt;P&gt;%let x= %scan(&amp;amp;jlist,&amp;amp;i,%str(|));&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;proc sort data = jobs_&amp;amp;jobmax; by hash state; run;&lt;/P&gt;&lt;P&gt;proc sort data = jobs_&amp;amp;x; by hash state; run;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;data comb;&lt;/P&gt;&lt;P&gt;merge jobs_&amp;amp;jobmax(in=var1) jobs_&amp;amp;x(in=var2);&lt;/P&gt;&lt;P&gt;by hash state;&lt;/P&gt;&lt;P&gt;if var1=0 and var2=1;&lt;/P&gt;&lt;P&gt;run;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;proc sql ;&lt;/P&gt;&lt;P&gt;select count(*) into :ctno from comb;&lt;/P&gt;&lt;P&gt;quit;&lt;/P&gt;&lt;P&gt;%put &amp;amp;ctno;&lt;/P&gt;&lt;P&gt;%if &amp;amp;z=1 and &amp;amp;ctno=0 %then %do;&lt;/P&gt;&lt;P&gt;%let jb= &amp;amp;x;&lt;/P&gt;&lt;P&gt;%let z=%eval(&amp;amp;z+1);&lt;/P&gt;&lt;P&gt;%put &amp;amp;jb;&lt;/P&gt;&lt;P&gt;%end;&lt;/P&gt;&lt;P&gt;%else %if &amp;amp;z ne 1 and &amp;amp;ctno =0 and &amp;amp;x ne &amp;amp;jobmax %then %do;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;%let jb= %sysfunc(cats(&amp;amp;jb,%str(|),&amp;amp;x));&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;%put &amp;amp;jb;&lt;/P&gt;&lt;P&gt;%end;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;%end;&lt;/P&gt;&lt;P&gt;%put &amp;amp;jb;&lt;/P&gt;&lt;P&gt;data finaljb;&lt;/P&gt;&lt;P&gt;set testjobs;&lt;/P&gt;&lt;P&gt;if jobboardid in (&amp;amp;jb);&lt;/P&gt;&lt;P&gt;run;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;%mend findjb;&lt;/P&gt;&lt;P&gt;%findjb;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Tue, 11 Mar 2014 14:12:46 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Macro-Problem/m-p/139462#M28142</guid>
      <dc:creator>Aman4SAS</dc:creator>
      <dc:date>2014-03-11T14:12:46Z</dc:date>
    </item>
    <item>
      <title>Re: Macro Problem</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Macro-Problem/m-p/139463#M28143</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Mmm, having some difficulty following what you are trying to do there.&amp;nbsp; May I suggest to add these couple of lines in:&lt;/P&gt;&lt;P&gt;---&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; %else %if &amp;amp;z ne 1 and &amp;amp;ctno =0 and &amp;amp;x ne &amp;amp;jobmax %then %do;&lt;/P&gt;&lt;P&gt;%put X: &amp;amp;x.;&lt;/P&gt;&lt;P&gt;%put JB: &amp;amp;jb.;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; %let jb= %sysfunc(cats(&amp;amp;jb,%str(|),&amp;amp;x));&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; %put &amp;amp;jb;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; %end;&lt;/P&gt;&lt;P&gt;---&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;And see what comes out - make sure to have moptions mprint and symbolgen on.&amp;nbsp; It maybe something simple, perhaps try putting double quotes around the &amp;amp;x and &amp;amp;jb for instance = %sysfunc(cats("&amp;amp;jb.",%str(|),"&amp;amp;x."));&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Tue, 11 Mar 2014 14:32:48 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Macro-Problem/m-p/139463#M28143</guid>
      <dc:creator>RW9</dc:creator>
      <dc:date>2014-03-11T14:32:48Z</dc:date>
    </item>
    <item>
      <title>Re: Macro Problem</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Macro-Problem/m-p/139464#M28144</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Why would you be using CATS() function with macro variables?&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Tue, 11 Mar 2014 15:55:31 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Macro-Problem/m-p/139464#M28144</guid>
      <dc:creator>Tom</dc:creator>
      <dc:date>2014-03-11T15:55:31Z</dc:date>
    </item>
    <item>
      <title>Re: Macro Problem</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Macro-Problem/m-p/139465#M28145</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;If you want to generate | delimited list of values from a dataset into a macro variable then PROC SQL can do that directly.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;proc sql noprint ;&lt;/P&gt;&lt;P&gt;&amp;nbsp; select jobid into :joblist separated by '|'&lt;/P&gt;&lt;P&gt;&amp;nbsp; from mydata&lt;/P&gt;&lt;P&gt;;&lt;/P&gt;&lt;P&gt;quit;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Tue, 11 Mar 2014 15:58:29 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Macro-Problem/m-p/139465#M28145</guid>
      <dc:creator>Tom</dc:creator>
      <dc:date>2014-03-11T15:58:29Z</dc:date>
    </item>
  </channel>
</rss>

