<?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 variable(create case statement) with do iteration in proc sql select in New SAS User</title>
    <link>https://communities.sas.com/t5/New-SAS-User/macro-variable-create-case-statement-with-do-iteration-in-proc/m-p/665303#M22909</link>
    <description>&lt;P&gt;&lt;a href="https://communities.sas.com/t5/user/viewprofilepage/user-id/335443"&gt;@andreibuzurniuc&lt;/a&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Some advice — the first step, BEFORE writing any macro, is to create legal valid&amp;nbsp;&lt;STRONG&gt;working&lt;/STRONG&gt; SAS code.for a small portion of your situation, without macros and without macro variables. You clearly haven't done this. So let me say that if you don't have legal valid&amp;nbsp;&lt;STRONG&gt;working&amp;nbsp;&lt;/STRONG&gt;SAS code without macros and without macro variables, then it will not work when you try to convert it to a macro.&lt;/P&gt;</description>
    <pubDate>Fri, 26 Jun 2020 10:43:50 GMT</pubDate>
    <dc:creator>PaigeMiller</dc:creator>
    <dc:date>2020-06-26T10:43:50Z</dc:date>
    <item>
      <title>macro variable(create case statement) with do iteration in proc sql select</title>
      <link>https://communities.sas.com/t5/New-SAS-User/macro-variable-create-case-statement-with-do-iteration-in-proc/m-p/665287#M22907</link>
      <description>&lt;P&gt;hello! i have a question, this macro code&amp;nbsp; &amp;nbsp;'casecomis(nr)' can work in proc sql select ? in this moment i how error .&lt;/P&gt;&lt;P&gt;%let edd&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; =&amp;nbsp;&amp;nbsp; %sysfunc(putn("&amp;amp;data_fin"d, ddmmyy6.));&amp;nbsp;&amp;nbsp; %put &amp;amp;edd;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; /*from prompt*/&lt;/P&gt;&lt;P&gt;%let beg&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; =&amp;nbsp;&amp;nbsp; %sysfunc(putn("&amp;amp;data_ini"d, ddmmyy6.));&amp;nbsp;&amp;nbsp; %put &amp;amp;beg;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; /*from prompt*/&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;%let nr = &amp;amp;nrluni;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; /*from prompt*/&lt;/P&gt;&lt;P&gt;%put &amp;amp;nr;&lt;/P&gt;&lt;P&gt;%let S1 = %sysfunc(intnx(month,"&amp;amp;data_fin"d,-0,end),yymmn4.);&amp;nbsp; %put &amp;amp;S1;&lt;/P&gt;&lt;P&gt;%let S2 = %sysfunc(intnx(month,"&amp;amp;data_fin"d,-1,end),yymmn4.);&amp;nbsp; %put &amp;amp;S2;&lt;/P&gt;&lt;P&gt;%let S3 = %sysfunc(intnx(month,"&amp;amp;data_fin"d,-2,end),yymmn4.);&amp;nbsp; %put &amp;amp;S3;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;%macro&lt;/STRONG&gt; casecomis(nr);&lt;/P&gt;&lt;P&gt;&amp;nbsp; %do j=&lt;STRONG&gt;0&lt;/STRONG&gt; %to &amp;amp;nr;&lt;/P&gt;&lt;P&gt;&amp;nbsp; %let i=%eval(&amp;amp;j+1);&lt;/P&gt;&lt;P&gt;&amp;nbsp; %let luna= &amp;amp;S&amp;amp;i;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; %let separatorb =%str(,);&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; %let varbeg= %sysfunc(intnx(month,"&amp;amp;data_fin"d,-&amp;amp;j,BEGINNING));&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; %let varend= %sysfunc(intnx(month,"&amp;amp;data_fin"d,-&amp;amp;j,end));&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;%let varcase= %sysfunc(case when (data_pos &amp;gt;=&amp;amp;varbeg and data_pos&amp;lt;=&amp;amp;varend) then SF&amp;nbsp; else 0 end as INC_&amp;amp;luna);&lt;/P&gt;&lt;P&gt;%put &amp;amp;varcase;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;%put &amp;amp;separatorb;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; %end;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; %let aa= INC_&amp;amp;S1;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; %do i=&lt;STRONG&gt;2&lt;/STRONG&gt; %to &amp;amp;nr;&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;%let total=%eval(&amp;amp;aa+((INC_&amp;amp;&amp;amp;S&amp;amp;j));&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;%put &amp;amp;total;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; %end;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;%mend&lt;/STRONG&gt; casecomis;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;proc&lt;/STRONG&gt; &lt;STRONG&gt;sql&lt;/STRONG&gt;;&lt;/P&gt;&lt;P&gt;Create table ComSS as select * ,&amp;nbsp;&amp;nbsp; %&lt;STRONG&gt;&lt;EM&gt;casecomis&lt;/EM&gt;&lt;/STRONG&gt;(&amp;amp;nr)&amp;nbsp; as INC_Total&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; from ExemplComss;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Log error:&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;301 proc sql;&lt;/P&gt;&lt;P&gt;302 Create table ComisioaneSF as select * , %casecomis(&amp;amp;nr) as INC_Total&lt;BR /&gt;WARNING: Apparent symbolic reference S not resolved.&lt;BR /&gt;ERROR: Expected open parenthesis after macro function name not found.&lt;BR /&gt;4 The SAS System 10:17 Friday, June 26, 2020&lt;/P&gt;&lt;P&gt;(data_pos &amp;gt;=22036 and data_pos&amp;lt;=22066) then SF else 0 end as INC_2005)&lt;BR /&gt;,&lt;BR /&gt;WARNING: Apparent symbolic reference S not resolved.&lt;BR /&gt;ERROR: Expected open parenthesis after macro function name not found.&lt;BR /&gt;(data_pos &amp;gt;=22006 and data_pos&amp;lt;=22035) then SF else 0 end as INC_2004)&lt;BR /&gt;,&lt;BR /&gt;302 Create table ComSS as select * , %casecomis(&amp;amp;nr) as INC_Total&lt;BR /&gt;_________&lt;BR /&gt;22&lt;BR /&gt;ERROR 22-322: Syntax error, expecting one of the following: !, !!, &amp;amp;, *, **, +, ',', -, '.', /, &amp;lt;, &amp;lt;=, &amp;lt;&amp;gt;, =, &amp;gt;, &amp;gt;=, ?, AND, AS,&lt;BR /&gt;CONTAINS, EQ, EQT, GE, GET, GT, GTT, LE, LET, LIKE, LT, LTT, NE, NET, OR, ^=, |, ||, ~=.&lt;/P&gt;&lt;P&gt;303 from ExemplComss;&lt;BR /&gt;NOTE: PROC SQL set option NOEXEC and will continue to check the syntax of statements.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Thanks!!!&lt;/P&gt;</description>
      <pubDate>Fri, 26 Jun 2020 09:20:27 GMT</pubDate>
      <guid>https://communities.sas.com/t5/New-SAS-User/macro-variable-create-case-statement-with-do-iteration-in-proc/m-p/665287#M22907</guid>
      <dc:creator>andreibuzurniuc</dc:creator>
      <dc:date>2020-06-26T09:20:27Z</dc:date>
    </item>
    <item>
      <title>Re: macro variable(create case statement) with do iteration in proc sql select</title>
      <link>https://communities.sas.com/t5/New-SAS-User/macro-variable-create-case-statement-with-do-iteration-in-proc/m-p/665291#M22908</link>
      <description>&lt;P&gt;%SYSFUNC can only be used to execute&amp;nbsp;&lt;EM&gt;data step functions&lt;/EM&gt; in a macro statement. You cannot execute other code with it. So&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;%sysfunc(case when (&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;can't work.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Since &amp;amp;S1 contains a period, this&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt; %let aa= INC_&amp;amp;S1;
   %do i=2 %to &amp;amp;nr;
      %let total=%eval(&amp;amp;aa+((INC_&amp;amp;&amp;amp;S&amp;amp;j));&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;will resolve to&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;%let total=%eval(INC_202001+((INC_202001));&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;Since %eval is designed to calculate with integers, it cannot handle the&amp;nbsp;&lt;EM&gt;text&lt;/EM&gt;(!) it is given as argument.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Just the first two things that came to my attention.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;The fact that you have data (periods) in structure (column names) lets me suspect a design problem, so you should contemplate changing your dataset layout to long. (see Maxim 19)&lt;/P&gt;
&lt;P&gt;For in-depth help, supply example data in usable form (self-contained data step, usually with datalines), and what you want to get out of it.&lt;/P&gt;</description>
      <pubDate>Fri, 26 Jun 2020 09:36:56 GMT</pubDate>
      <guid>https://communities.sas.com/t5/New-SAS-User/macro-variable-create-case-statement-with-do-iteration-in-proc/m-p/665291#M22908</guid>
      <dc:creator>Kurt_Bremser</dc:creator>
      <dc:date>2020-06-26T09:36:56Z</dc:date>
    </item>
    <item>
      <title>Re: macro variable(create case statement) with do iteration in proc sql select</title>
      <link>https://communities.sas.com/t5/New-SAS-User/macro-variable-create-case-statement-with-do-iteration-in-proc/m-p/665303#M22909</link>
      <description>&lt;P&gt;&lt;a href="https://communities.sas.com/t5/user/viewprofilepage/user-id/335443"&gt;@andreibuzurniuc&lt;/a&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Some advice — the first step, BEFORE writing any macro, is to create legal valid&amp;nbsp;&lt;STRONG&gt;working&lt;/STRONG&gt; SAS code.for a small portion of your situation, without macros and without macro variables. You clearly haven't done this. So let me say that if you don't have legal valid&amp;nbsp;&lt;STRONG&gt;working&amp;nbsp;&lt;/STRONG&gt;SAS code without macros and without macro variables, then it will not work when you try to convert it to a macro.&lt;/P&gt;</description>
      <pubDate>Fri, 26 Jun 2020 10:43:50 GMT</pubDate>
      <guid>https://communities.sas.com/t5/New-SAS-User/macro-variable-create-case-statement-with-do-iteration-in-proc/m-p/665303#M22909</guid>
      <dc:creator>PaigeMiller</dc:creator>
      <dc:date>2020-06-26T10:43:50Z</dc:date>
    </item>
  </channel>
</rss>

