<?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: Question regarding Macro. in SAS Studio</title>
    <link>https://communities.sas.com/t5/SAS-Studio/Question-regarding-Macro/m-p/432086#M4491</link>
    <description>&lt;P&gt;Following only this part,&lt;/P&gt;&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;	PROC SQL;
		CREATE TABLE HIST_&amp;amp;SUFF_3Y. AS
		SELECT PARTYID, SUM(DERIVED_GI_ANNUAL_GWP) AS HISTSUM
		FROM EVERMOT_PREMPF_NODUP
		WHERE YEAR IN &amp;amp;RANGE_3Y.
		GROUP BY PARTYID
	;
	RUN; QUIT;&lt;/CODE&gt;&lt;/PRE&gt;&lt;P&gt;What would be place in &amp;amp;SUFF_3Y. ?&lt;BR /&gt;A figure from the macro or a column name?&lt;BR /&gt;&lt;BR /&gt;I tried running the macro in SAS Studio but it generates no result.&lt;BR /&gt;&lt;BR /&gt;Thank you.&amp;nbsp;&lt;/P&gt;</description>
    <pubDate>Tue, 30 Jan 2018 07:52:08 GMT</pubDate>
    <dc:creator>Wken1122</dc:creator>
    <dc:date>2018-01-30T07:52:08Z</dc:date>
    <item>
      <title>Question regarding Macro.</title>
      <link>https://communities.sas.com/t5/SAS-Studio/Question-regarding-Macro/m-p/430754#M4453</link>
      <description>&lt;P&gt;Hi,&lt;BR /&gt;&lt;BR /&gt;Can someone please kindly explain what does this macro do?&lt;BR /&gt;&lt;BR /&gt;&lt;/P&gt;&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;%macro HISTPREMPF(EFFYEAR);
	%LET YEAREFF=&amp;amp;EFFYEAR.;
	%LET SUFF_3Y=%EVAL(&amp;amp;YEAREFF.)_3Y; %PUT &amp;amp;SUFF_3Y.;
	%LET RANGE_3Y=(%EVAL(%EVAL(&amp;amp;YEAREFF.)-2),%EVAL(%EVAL(&amp;amp;YEAREFF.)-1)); %PUT &amp;amp;RANGE_3Y.;
	%LET SUFF_5Y=&amp;amp;YEAREFF._5Y;
	%LET RANGE_5Y=(%EVAL(%EVAL(&amp;amp;YEAREFF.)-4),%EVAL(%EVAL(&amp;amp;YEAREFF.)-3),%EVAL(%EVAL(&amp;amp;YEAREFF.)-2),%EVAL(%EVAL(&amp;amp;YEAREFF.)-1)); %PUT &amp;amp;RANGE_5Y.;
	%LET SUFF_10Y=&amp;amp;YEAREFF._10Y;
	%LET RANGE_10Y=(%EVAL(%EVAL(&amp;amp;YEAREFF.)-9),%EVAL(%EVAL(&amp;amp;YEAREFF.)-8),%EVAL(%EVAL(&amp;amp;YEAREFF.)-7),%EVAL(%EVAL(&amp;amp;YEAREFF.)-6),%EVAL(%EVAL(&amp;amp;YEAREFF.)-5),%EVAL(%EVAL(&amp;amp;YEAREFF.)-4),%EVAL(%EVAL(&amp;amp;YEAREFF.)-3),%EVAL(%EVAL(&amp;amp;YEAREFF.)-2),%EVAL(%EVAL(&amp;amp;YEAREFF.)-1)); %PUT &amp;amp;RANGE_5Y.;&lt;/CODE&gt;&lt;/PRE&gt;&lt;P&gt;There is a column, EFFECTIVEYEAR, is it equivalent to EFFYEAR?&lt;BR /&gt;&lt;BR /&gt;&lt;/P&gt;&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;PROC SQL;
		CREATE TABLE HIST_&amp;amp;SUFF_3Y. AS
		SELECT PARTYID, SUM(DERIVED_GI_ANNUAL_GWP) AS HISTSUM
		FROM EVERMOT_PREMPF_NODUP
		WHERE YEAR IN &amp;amp;RANGE_3Y.
		GROUP BY PARTYID
	;
	RUN; QUIT;&lt;/CODE&gt;&lt;/PRE&gt;&lt;P&gt;What would be placed into HIST_&amp;amp;SUFF_3Y. and &amp;amp;RANGE_3Y. ?&lt;BR /&gt;&lt;BR /&gt;Thank you in advance.&lt;/P&gt;</description>
      <pubDate>Thu, 25 Jan 2018 02:29:11 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Studio/Question-regarding-Macro/m-p/430754#M4453</guid>
      <dc:creator>Wken1122</dc:creator>
      <dc:date>2018-01-25T02:29:11Z</dc:date>
    </item>
    <item>
      <title>Re: Question regarding Macro.</title>
      <link>https://communities.sas.com/t5/SAS-Studio/Question-regarding-Macro/m-p/430760#M4455</link>
      <description>&lt;P&gt;It would have the value used in the macro call:&lt;/P&gt;
&lt;PRE class=" language-sas"&gt;&lt;CODE class="  language-sas"&gt;%HISTPREMPF(xxx)&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;where you'd substitute xxx with some value or variable&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Art, CEO, AnalystFinder.com&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Thu, 25 Jan 2018 02:47:54 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Studio/Question-regarding-Macro/m-p/430760#M4455</guid>
      <dc:creator>art297</dc:creator>
      <dc:date>2018-01-25T02:47:54Z</dc:date>
    </item>
    <item>
      <title>Re: Question regarding Macro.</title>
      <link>https://communities.sas.com/t5/SAS-Studio/Question-regarding-Macro/m-p/430812#M4458</link>
      <description>&lt;P&gt;Your macro code is not complete, at least the&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;%mend;&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;is missing.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Since SAS is an interpreting environment, there's one easy method: run the code and see what happens. Look at the log (and the output, if such is created).&lt;/P&gt;
&lt;P&gt;In the case of a macro with parameters, test-run the macro with selected parameters.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;See Maxim 4.&lt;/P&gt;</description>
      <pubDate>Thu, 25 Jan 2018 08:41:46 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Studio/Question-regarding-Macro/m-p/430812#M4458</guid>
      <dc:creator>Kurt_Bremser</dc:creator>
      <dc:date>2018-01-25T08:41:46Z</dc:date>
    </item>
    <item>
      <title>Re: Question regarding Macro.</title>
      <link>https://communities.sas.com/t5/SAS-Studio/Question-regarding-Macro/m-p/431150#M4465</link>
      <description>&lt;P&gt;Hi,&lt;BR /&gt;&lt;BR /&gt;&lt;/P&gt;&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;%macro HISTPREMPF(EFFYEAR);
	%LET YEAREFF=&amp;amp;EFFYEAR.;
	%LET SUFF_3Y=%EVAL(&amp;amp;YEAREFF.)_3Y; %PUT &amp;amp;SUFF_3Y.;
	%LET RANGE_3Y=(%EVAL(%EVAL(&amp;amp;YEAREFF.)-2),%EVAL(%EVAL(&amp;amp;YEAREFF.)-1)); %PUT &amp;amp;RANGE_3Y.;
	%LET SUFF_5Y=&amp;amp;YEAREFF._5Y;
	%LET RANGE_5Y=(%EVAL(%EVAL(&amp;amp;YEAREFF.)-4),%EVAL(%EVAL(&amp;amp;YEAREFF.)-3),%EVAL(%EVAL(&amp;amp;YEAREFF.)-2),%EVAL(%EVAL(&amp;amp;YEAREFF.)-1)); %PUT &amp;amp;RANGE_5Y.;
	%LET SUFF_10Y=&amp;amp;YEAREFF._10Y;
	%LET RANGE_10Y=(%EVAL(%EVAL(&amp;amp;YEAREFF.)-9),%EVAL(%EVAL(&amp;amp;YEAREFF.)-8),%EVAL(%EVAL(&amp;amp;YEAREFF.)-7),%EVAL(%EVAL(&amp;amp;YEAREFF.)-6),%EVAL(%EVAL(&amp;amp;YEAREFF.)-5),%EVAL(%EVAL(&amp;amp;YEAREFF.)-4),%EVAL(%EVAL(&amp;amp;YEAREFF.)-3),%EVAL(%EVAL(&amp;amp;YEAREFF.)-2),%EVAL(%EVAL(&amp;amp;YEAREFF.)-1)); %PUT &amp;amp;RANGE_5Y.;

	PROC SQL;
		CREATE TABLE HIST_&amp;amp;SUFF_3Y. AS
		SELECT PARTYID, SUM(DERIVED_GI_ANNUAL_GWP) AS HISTSUM
		FROM EVERMOT_PREMPF_NODUP
		WHERE YEAR IN &amp;amp;RANGE_3Y.
		GROUP BY PARTYID
	;
	RUN; QUIT;

	PROC SQL;
		CREATE TABLE HIST_&amp;amp;SUFF_5Y. AS
		SELECT PARTYID, SUM(DERIVED_GI_ANNUAL_GWP) AS HISTSUM
		FROM EVERMOT_PREMPF_NODUP
		WHERE YEAR IN &amp;amp;RANGE_5Y.
		GROUP BY PARTYID
	;
	RUN; QUIT;

	PROC SQL;
		CREATE TABLE HIST_&amp;amp;SUFF_10Y. AS
		SELECT PARTYID, SUM(DERIVED_GI_ANNUAL_GWP) AS HISTSUM
		FROM EVERMOT_PREMPF_NODUP
		WHERE YEAR IN &amp;amp;RANGE_10Y.
		GROUP BY PARTYID
	;
	RUN; QUIT;


	PROC SQL;
		CREATE TABLE HIST_&amp;amp;YEAREFF. AS
		SELECT PARTYID, SUM(DERIVED_GI_ANNUAL_GWP) AS HISTSUM
		FROM EVERMOT_PREMPF_NODUP
		WHERE YEAR &amp;lt;&amp;amp;YEAREFF.
		GROUP BY PARTYID
	;
	RUN; QUIT;

	%LET TAB_BASE=BASE;
	%LET TAB_TARGET=BASE_1;
	PROC SQL;
		CREATE TABLE &amp;amp;TAB_TARGET. AS
		SELECT &amp;amp;TAB_BASE..*, HISTSUM AS HISTGWP_&amp;amp;SUFF_3Y.
		FROM &amp;amp;TAB_BASE. 
		LEFT JOIN HIST_&amp;amp;SUFF_3Y.
	    ON &amp;amp;TAB_BASE..PARTYID=HIST_&amp;amp;SUFF_3Y..PARTYID AND YEAR(&amp;amp;TAB_BASE..EFFECTIVEDATE)=&amp;amp;YEAREFF.
	;
	RUN;QUIT;

	%LET TAB_BASE=BASE_1;
	%LET TAB_TARGET=BASE_2;
	PROC SQL;
		CREATE TABLE &amp;amp;TAB_TARGET. AS
		SELECT &amp;amp;TAB_BASE..*, HISTSUM AS HISTGWP_&amp;amp;SUFF_5Y.
		FROM &amp;amp;TAB_BASE.
		LEFT JOIN HIST_&amp;amp;SUFF_5Y.
	    ON &amp;amp;TAB_BASE..PARTYID=HIST_&amp;amp;SUFF_5Y..PARTYID AND YEAR(&amp;amp;TAB_BASE..EFFECTIVEDATE)=&amp;amp;YEAREFF.
	;
	RUN;QUIT;

	%LET TAB_BASE=BASE_2;
	%LET TAB_TARGET=BASE_3;
	PROC SQL;
		CREATE TABLE &amp;amp;TAB_TARGET. AS
		SELECT &amp;amp;TAB_BASE..*, HISTSUM AS HISTGWP_&amp;amp;SUFF_10Y.
		FROM &amp;amp;TAB_BASE.
		LEFT JOIN HIST_&amp;amp;SUFF_10Y.
	    ON &amp;amp;TAB_BASE..PARTYID=HIST_&amp;amp;SUFF_10Y..PARTYID AND YEAR(&amp;amp;TAB_BASE..EFFECTIVEDATE)=&amp;amp;YEAREFF.
	;
	RUN;QUIT;

	%LET TAB_BASE=BASE_3;
	%LET TAB_TARGET=BASE_4;
	PROC SQL;
		CREATE TABLE &amp;amp;TAB_TARGET. AS
		SELECT &amp;amp;TAB_BASE..*, HISTSUM AS HISTGWP_&amp;amp;YEAREFF._ALL
		FROM &amp;amp;TAB_BASE.
		LEFT JOIN HIST_&amp;amp;YEAREFF.
	    ON &amp;amp;TAB_BASE..PARTYID=HIST_&amp;amp;YEAREFF..PARTYID  AND YEAR(&amp;amp;TAB_BASE..EFFECTIVEDATE)=&amp;amp;YEAREFF.
	;
	RUN;QUIT;

	DATA BASE;
		SET BASE_4;
	RUN;

	PROC DELETE DATA=BASE_1 BASE_2 BASE_3 BASE_4 HIST_&amp;amp;SUFF_3Y. HIST_&amp;amp;SUFF_5Y. HIST_&amp;amp;SUFF_10Y. HIST_&amp;amp;YEAREFF.;
%mend;

%HISTPREMPF(&amp;amp;HIST_ASOF_YEAR.); RUN; QUIT;&lt;/CODE&gt;&lt;/PRE&gt;&lt;P&gt;This is the complete code.&lt;BR /&gt;&lt;BR /&gt;I did love to try to run the code..but there are some issue with my SAS studio, the output result are not display after execution.&lt;BR /&gt;&lt;BR /&gt;Thank you.&lt;/P&gt;</description>
      <pubDate>Fri, 26 Jan 2018 01:59:35 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Studio/Question-regarding-Macro/m-p/431150#M4465</guid>
      <dc:creator>Wken1122</dc:creator>
      <dc:date>2018-01-26T01:59:35Z</dc:date>
    </item>
    <item>
      <title>Re: Question regarding Macro.</title>
      <link>https://communities.sas.com/t5/SAS-Studio/Question-regarding-Macro/m-p/431155#M4466</link>
      <description>&lt;P&gt;Try running the %LET statements without the macro wrapper and see if they do what you want.&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;%put &amp;amp;HIST_ASOF_YEAR.;
%let EFFYEAR=&amp;amp;HIST_ASOF_YEAR.;
%put &amp;amp;EFFYEAR;

%LET YEAREFF=&amp;amp;EFFYEAR.;
%LET SUFF_3Y=%EVAL(&amp;amp;YEAREFF.)_3Y;
%PUT &amp;amp;SUFF_3Y.;

%LET RANGE_3Y=(%EVAL(%EVAL(&amp;amp;YEAREFF.)-2),%EVAL(%EVAL(&amp;amp;YEAREFF.)-1)); 
%PUT &amp;amp;RANGE_3Y.;

%LET SUFF_5Y=&amp;amp;YEAREFF._5Y;
%LET RANGE_5Y=(%EVAL(%EVAL(&amp;amp;YEAREFF.)-4),%EVAL(%EVAL(&amp;amp;YEAREFF.)-3),%EVAL(%EVAL(&amp;amp;YEAREFF.)-2),%EVAL(%EVAL(&amp;amp;YEAREFF.)-1)); 
%PUT &amp;amp;RANGE_5Y.;

%LET SUFF_10Y=&amp;amp;YEAREFF._10Y;
%LET RANGE_10Y=(%EVAL(%EVAL(&amp;amp;YEAREFF.)-9),%EVAL(%EVAL(&amp;amp;YEAREFF.)-8),%EVAL(%EVAL(&amp;amp;YEAREFF.)-7),%EVAL(%EVAL(&amp;amp;YEAREFF.)-6),%EVAL(%EVAL(&amp;amp;YEAREFF.)-5),%EVAL(%EVAL(&amp;amp;YEAREFF.)-4),%EVAL(%EVAL(&amp;amp;YEAREFF.)-3),%EVAL(%EVAL(&amp;amp;YEAREFF.)-2),%EVAL(%EVAL(&amp;amp;YEAREFF.)-1)); 
%PUT &amp;amp;RANGE_5Y.;
&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;In general it looks like you have waaaay too many %EVAL() calls.&amp;nbsp; Consider this statement.&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;%LET RANGE_3Y=(%EVAL(%EVAL(&amp;amp;YEAREFF.)-2),%EVAL(%EVAL(&amp;amp;YEAREFF.)-1)); &lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;Why not just do this?&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;%LET RANGE_3Y=(%EVAL(&amp;amp;YEAREFF.-2),%EVAL(&amp;amp;YEAREFF.-1)); &lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;So if YEAREFF is 2015 then result would be (2013,2014).&amp;nbsp; Not sure why it called range 3 Y when it just covers two years.&lt;/P&gt;</description>
      <pubDate>Fri, 26 Jan 2018 02:34:05 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Studio/Question-regarding-Macro/m-p/431155#M4466</guid>
      <dc:creator>Tom</dc:creator>
      <dc:date>2018-01-26T02:34:05Z</dc:date>
    </item>
    <item>
      <title>Re: Question regarding Macro.</title>
      <link>https://communities.sas.com/t5/SAS-Studio/Question-regarding-Macro/m-p/431187#M4468</link>
      <description>&lt;P&gt;What &lt;a href="https://communities.sas.com/t5/user/viewprofilepage/user-id/159"&gt;@Tom&lt;/a&gt; said. Execute the %let's without the macro definition, and %put the resulting macrovar's. Then run the SQL steps one by one, to get a feel for the runtime, and inspect the individual results.&lt;/P&gt;</description>
      <pubDate>Fri, 26 Jan 2018 07:06:17 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Studio/Question-regarding-Macro/m-p/431187#M4468</guid>
      <dc:creator>Kurt_Bremser</dc:creator>
      <dc:date>2018-01-26T07:06:17Z</dc:date>
    </item>
    <item>
      <title>Re: Question regarding Macro.</title>
      <link>https://communities.sas.com/t5/SAS-Studio/Question-regarding-Macro/m-p/432086#M4491</link>
      <description>&lt;P&gt;Following only this part,&lt;/P&gt;&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;	PROC SQL;
		CREATE TABLE HIST_&amp;amp;SUFF_3Y. AS
		SELECT PARTYID, SUM(DERIVED_GI_ANNUAL_GWP) AS HISTSUM
		FROM EVERMOT_PREMPF_NODUP
		WHERE YEAR IN &amp;amp;RANGE_3Y.
		GROUP BY PARTYID
	;
	RUN; QUIT;&lt;/CODE&gt;&lt;/PRE&gt;&lt;P&gt;What would be place in &amp;amp;SUFF_3Y. ?&lt;BR /&gt;A figure from the macro or a column name?&lt;BR /&gt;&lt;BR /&gt;I tried running the macro in SAS Studio but it generates no result.&lt;BR /&gt;&lt;BR /&gt;Thank you.&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Tue, 30 Jan 2018 07:52:08 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Studio/Question-regarding-Macro/m-p/432086#M4491</guid>
      <dc:creator>Wken1122</dc:creator>
      <dc:date>2018-01-30T07:52:08Z</dc:date>
    </item>
    <item>
      <title>Re: Question regarding Macro.</title>
      <link>https://communities.sas.com/t5/SAS-Studio/Question-regarding-Macro/m-p/432090#M4492</link>
      <description>&lt;BLOCKQUOTE&gt;&lt;HR /&gt;&lt;a href="https://communities.sas.com/t5/user/viewprofilepage/user-id/165226"&gt;@Wken1122&lt;/a&gt; wrote:&lt;BR /&gt;
&lt;P&gt;Following only this part,&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;	PROC SQL;
		CREATE TABLE HIST_&amp;amp;SUFF_3Y. AS
		SELECT PARTYID, SUM(DERIVED_GI_ANNUAL_GWP) AS HISTSUM
		FROM EVERMOT_PREMPF_NODUP
		WHERE YEAR IN &amp;amp;RANGE_3Y.
		GROUP BY PARTYID
	;
	RUN; QUIT;&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;What would be place in &amp;amp;SUFF_3Y. ?&lt;BR /&gt;A figure from the macro or a column name?&lt;BR /&gt;&lt;BR /&gt;I tried running the macro in SAS Studio but it generates no result.&lt;BR /&gt;&lt;BR /&gt;Thank you.&amp;nbsp;&lt;/P&gt;
&lt;HR /&gt;&lt;/BLOCKQUOTE&gt;
&lt;P&gt;Just look at your code, it's all there:&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;	%LET YEAREFF=&amp;amp;EFFYEAR.;
	%LET SUFF_3Y=%EVAL(&amp;amp;YEAREFF.)_3Y; %PUT &amp;amp;SUFF_3Y.;
&lt;/CODE&gt;&lt;/PRE&gt;</description>
      <pubDate>Tue, 30 Jan 2018 07:55:37 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Studio/Question-regarding-Macro/m-p/432090#M4492</guid>
      <dc:creator>Kurt_Bremser</dc:creator>
      <dc:date>2018-01-30T07:55:37Z</dc:date>
    </item>
    <item>
      <title>Re: Question regarding Macro.</title>
      <link>https://communities.sas.com/t5/SAS-Studio/Question-regarding-Macro/m-p/432185#M4495</link>
      <description>&lt;P&gt;The code doesn't do anything that would end up in the "results" window. Everything it does would be described in the log and the result of the process would simply be the creation of one file in your work library.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Art, CEO, AnalystFinder.com&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Tue, 30 Jan 2018 13:51:37 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Studio/Question-regarding-Macro/m-p/432185#M4495</guid>
      <dc:creator>art297</dc:creator>
      <dc:date>2018-01-30T13:51:37Z</dc:date>
    </item>
  </channel>
</rss>

