<?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 Parameter in SAS Programming</title>
    <link>https://communities.sas.com/t5/SAS-Programming/Macro-Parameter/m-p/728413#M226657</link>
    <description>&lt;P&gt;Include a macro argument OPERATOR, which can take on values eq ge gt le lt ne (or it can take on the values using the greater than sign, less than sign and equal sign)&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Example:&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;%macro test(column_value=,out_dataset=,operator=);
data &amp;amp;out_dataset.;
    set sashelp.cars;
    if cylinders &amp;amp;operator &amp;amp;column_value;
run;
%mend test;

%test(column_value=4,operator=eq,out_dataset=group1)
%test(column_value=6,operator=eq,out_dataset=group2)
%test(column_value=6,operator=ge,out_dataset=group3)
%test(column_value=6,operator=&amp;gt;=,out_dataset=group4)&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Which brings up the question: why do you need separate data sets to do this? What is the benefit of separate data sets (and macros) compared to keeping one large data set and doing whatever analysis comes next on the one large data set? If you use custom formats, you can get analyses of all the conditions you specified above, without macros and without creating separate data sets.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;BLOCKQUOTE&gt;
&lt;P&gt;&lt;U&gt;I need to create groups based on below&amp;nbsp;&lt;STRONG&gt;Column1&lt;/STRONG&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;values:&lt;/U&gt;&lt;/P&gt;
&lt;P&gt;=2&amp;nbsp;&amp;nbsp;&lt;BR /&gt;=3&lt;BR /&gt;=4&lt;BR /&gt;&amp;gt;=4&lt;BR /&gt;=5&lt;BR /&gt;&amp;gt;=5&lt;/P&gt;
&lt;/BLOCKQUOTE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Example:&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;proc format;
    value custf (multilabel) 2='2' 3='3' 4='4' 4-high='&amp;gt;=4' 5='5' 5-high='&amp;gt;=5';
run;

proc means data=sashelp.cars;
     class cylinders/mlf;
     var mpg_city;
     format cylinders custf.;
run;
&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
    <pubDate>Tue, 23 Mar 2021 13:06:50 GMT</pubDate>
    <dc:creator>PaigeMiller</dc:creator>
    <dc:date>2021-03-23T13:06:50Z</dc:date>
    <item>
      <title>Macro Parameter</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Macro-Parameter/m-p/728304#M226611</link>
      <description>&lt;P&gt;Could you let me know how to write the logic for handling below condition in the code:&lt;/P&gt;&lt;P&gt;How to handle&lt;STRONG&gt; column1&amp;gt;=7 logic&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;=====================================&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;%macro test(column_value=,out_dataset=);&lt;/P&gt;&lt;P&gt;data &amp;amp;out.;&lt;/P&gt;&lt;P&gt;set Table1;&lt;/P&gt;&lt;P&gt;if column1=&amp;amp;column_value;&lt;/P&gt;&lt;P&gt;run;&lt;/P&gt;&lt;P&gt;%mend test();&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;%test(column_value=3,out_dataset=group1);&lt;/P&gt;&lt;P&gt;%test(column_value=5,out_dataset=group2);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;if &lt;STRONG&gt;column1&amp;gt;=7&lt;/STRONG&gt; then create group3 dataset&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;STRONG&gt;/How to handle &amp;gt;= logic&lt;/STRONG&gt;&lt;/P&gt;</description>
      <pubDate>Mon, 22 Mar 2021 21:13:50 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Macro-Parameter/m-p/728304#M226611</guid>
      <dc:creator>Lav001</dc:creator>
      <dc:date>2021-03-22T21:13:50Z</dc:date>
    </item>
    <item>
      <title>Re: Macro Parameter</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Macro-Parameter/m-p/728310#M226613</link>
      <description>&lt;P&gt;Below should neatly do it:&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;%macro test(column_value=,out_dataset=);

	data &amp;amp;out_dataset.;
		%*Input dataset to read;
		set Table1;

		%* Condition required to subset the dataset;
		%if %sysevalf(&amp;amp;column_value. &amp;lt; 7) %then
			%do;
				if column1 = &amp;amp;column_value. then
					output;
			%end;

		%if %sysevalf(&amp;amp;column_value.) &amp;gt;= 7 %then
			%do;
				if column1 &amp;gt;= &amp;amp;column_value. then
					output;
			%end;
	run;

%mend;&lt;/CODE&gt;&lt;/PRE&gt;</description>
      <pubDate>Mon, 22 Mar 2021 21:38:55 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Macro-Parameter/m-p/728310#M226613</guid>
      <dc:creator>qoit</dc:creator>
      <dc:date>2021-03-22T21:38:55Z</dc:date>
    </item>
    <item>
      <title>Re: Macro Parameter</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Macro-Parameter/m-p/728312#M226615</link>
      <description>&lt;P&gt;Is column1 the name of a column or are you trying to refer to the first column where the name may be dynamic?&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;FYI I think your data statement should be:&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data &amp;amp;out_dataset..;&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;You cannot have different logic within the same macro so you need to decide to either:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;handle this separately, add in an exception for this specific case&lt;/LI&gt;
&lt;LI&gt;or pass the entire logic to the macro each time&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Your request means changing the code logic so your process has to be more dynamic in some fashion.&lt;/P&gt;
&lt;BLOCKQUOTE&gt;&lt;HR /&gt;&lt;a href="https://communities.sas.com/t5/user/viewprofilepage/user-id/252295"&gt;@Lav001&lt;/a&gt;&amp;nbsp;wrote:&lt;BR /&gt;
&lt;P&gt;Could you let me know how to write the logic for handling below condition in the code:&lt;/P&gt;
&lt;P&gt;How to handle&lt;STRONG&gt; column1&amp;gt;=7 logic&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;=====================================&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;%macro test(column_value=,out_dataset=);&lt;/P&gt;
&lt;P&gt;data &amp;amp;out.;&lt;/P&gt;
&lt;P&gt;set Table1;&lt;/P&gt;
&lt;P&gt;if column1=&amp;amp;column_value;&lt;/P&gt;
&lt;P&gt;run;&lt;/P&gt;
&lt;P&gt;%mend test();&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;%test(column_value=3,out_dataset=group1);&lt;/P&gt;
&lt;P&gt;%test(column_value=5,out_dataset=group2);&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;if &lt;STRONG&gt;column1&amp;gt;=7&lt;/STRONG&gt; then create group3 dataset&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;STRONG&gt;/How to handle &amp;gt;= logic&lt;/STRONG&gt;&lt;/P&gt;
&lt;HR /&gt;&lt;/BLOCKQUOTE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Mon, 22 Mar 2021 21:41:15 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Macro-Parameter/m-p/728312#M226615</guid>
      <dc:creator>Reeza</dc:creator>
      <dc:date>2021-03-22T21:41:15Z</dc:date>
    </item>
    <item>
      <title>Re: Macro Parameter</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Macro-Parameter/m-p/728319#M226619</link>
      <description>&lt;P&gt;&lt;STRONG&gt;Column1&lt;/STRONG&gt; refers to one particular column in the table.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;U&gt;I need to create groups based on below&amp;nbsp;&lt;STRONG&gt;Column1&lt;/STRONG&gt; values:&lt;/U&gt;&lt;/P&gt;&lt;P&gt;=2&amp;nbsp;&amp;nbsp;&lt;BR /&gt;=3&lt;BR /&gt;=4&lt;BR /&gt;&amp;gt;=4&lt;BR /&gt;=5&lt;BR /&gt;&amp;gt;=5&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;is there a way to pass the above Column1 value while calling the Macro instead of using separate conditions for each value.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Mon, 22 Mar 2021 22:41:42 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Macro-Parameter/m-p/728319#M226619</guid>
      <dc:creator>Lav001</dc:creator>
      <dc:date>2021-03-22T22:41:42Z</dc:date>
    </item>
    <item>
      <title>Re: Macro Parameter</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Macro-Parameter/m-p/728324#M226623</link>
      <description>&lt;P&gt;Hi&amp;nbsp;&lt;a href="https://communities.sas.com/t5/user/viewprofilepage/user-id/252295"&gt;@Lav001&lt;/a&gt;,&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;You could use something like this:&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;%macro test(cond,column_value=,out_dataset=);
data &amp;amp;out_dataset;
set Table1;
%if %length(&amp;amp;cond) %then if column1 %substr(&amp;amp;cond,%sysfunc(findc(&amp;amp;cond,&amp;lt;&amp;gt;)));
%else if column1=&amp;amp;column_value;;
run;
%mend test;&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;Then you can call the macro as intended (and also conditions with "&amp;gt;", "&amp;lt;" and "&amp;lt;=" are possible):&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;%test(column_value=3,out_dataset=group1)
%test(column_value=5,out_dataset=group2)
%test(column_value&amp;gt;=7,out_dataset=group3)
%test(column_value&amp;lt;=2,out_dataset=group4)
%test(column_value&amp;gt;8,out_dataset=group5)
%test(column_value&amp;lt;6,out_dataset=group6)&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Edit: Conditions with, say, "~=" can be implemented as well: Just insert the "~" in the second argument of the FINDC function: &lt;FONT face="courier new,courier"&gt;&amp;lt;~&amp;gt;&lt;/FONT&gt;.&lt;/P&gt;</description>
      <pubDate>Mon, 22 Mar 2021 23:48:12 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Macro-Parameter/m-p/728324#M226623</guid>
      <dc:creator>FreelanceReinh</dc:creator>
      <dc:date>2021-03-22T23:48:12Z</dc:date>
    </item>
    <item>
      <title>Re: Macro Parameter</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Macro-Parameter/m-p/728337#M226625</link>
      <description>&lt;BLOCKQUOTE&gt;&lt;HR /&gt;&lt;a href="https://communities.sas.com/t5/user/viewprofilepage/user-id/252295"&gt;@Lav001&lt;/a&gt;&amp;nbsp;wrote:&lt;BR /&gt;
&lt;P&gt;&lt;STRONG&gt;Column1&lt;/STRONG&gt; refers to one particular column in the table.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;U&gt;I need to create groups based on below&amp;nbsp;&lt;STRONG&gt;Column1&lt;/STRONG&gt; values:&lt;/U&gt;&lt;/P&gt;
&lt;P&gt;=2&amp;nbsp;&amp;nbsp;&lt;BR /&gt;=3&lt;BR /&gt;=4&lt;BR /&gt;&amp;gt;=4&lt;BR /&gt;=5&lt;BR /&gt;&amp;gt;=5&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;is there a way to pass the above Column1 value while calling the Macro instead of using separate conditions for each value.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;HR /&gt;&lt;/BLOCKQUOTE&gt;
&lt;P&gt;You have answered your own question.&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;%macro test(condition=,out_dataset=);
data &amp;amp;out_dataset;
  set Table1;
  if column1 &amp;amp;condition ;
run;
%mend test;
&lt;/CODE&gt;&lt;/PRE&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;%test(condition= =2&amp;nbsp;&amp;nbsp;,out_dataset= set1)
%test(condition= =3&amp;nbsp;&amp;nbsp;,out_dataset= set2)
%test(condition= =4&amp;nbsp;&amp;nbsp;,out_dataset= set3)
%test(condition= &amp;gt;=4&amp;nbsp;&amp;nbsp;,out_dataset= set4)
%test(condition= =5&amp;nbsp;&amp;nbsp;,out_dataset= set5)
%test(condition= &amp;gt;=5&amp;nbsp;&amp;nbsp;,out_dataset= set6)&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Tue, 23 Mar 2021 03:10:01 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Macro-Parameter/m-p/728337#M226625</guid>
      <dc:creator>Tom</dc:creator>
      <dc:date>2021-03-23T03:10:01Z</dc:date>
    </item>
    <item>
      <title>Re: Macro Parameter</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Macro-Parameter/m-p/728413#M226657</link>
      <description>&lt;P&gt;Include a macro argument OPERATOR, which can take on values eq ge gt le lt ne (or it can take on the values using the greater than sign, less than sign and equal sign)&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Example:&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;%macro test(column_value=,out_dataset=,operator=);
data &amp;amp;out_dataset.;
    set sashelp.cars;
    if cylinders &amp;amp;operator &amp;amp;column_value;
run;
%mend test;

%test(column_value=4,operator=eq,out_dataset=group1)
%test(column_value=6,operator=eq,out_dataset=group2)
%test(column_value=6,operator=ge,out_dataset=group3)
%test(column_value=6,operator=&amp;gt;=,out_dataset=group4)&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Which brings up the question: why do you need separate data sets to do this? What is the benefit of separate data sets (and macros) compared to keeping one large data set and doing whatever analysis comes next on the one large data set? If you use custom formats, you can get analyses of all the conditions you specified above, without macros and without creating separate data sets.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;BLOCKQUOTE&gt;
&lt;P&gt;&lt;U&gt;I need to create groups based on below&amp;nbsp;&lt;STRONG&gt;Column1&lt;/STRONG&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;values:&lt;/U&gt;&lt;/P&gt;
&lt;P&gt;=2&amp;nbsp;&amp;nbsp;&lt;BR /&gt;=3&lt;BR /&gt;=4&lt;BR /&gt;&amp;gt;=4&lt;BR /&gt;=5&lt;BR /&gt;&amp;gt;=5&lt;/P&gt;
&lt;/BLOCKQUOTE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Example:&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;proc format;
    value custf (multilabel) 2='2' 3='3' 4='4' 4-high='&amp;gt;=4' 5='5' 5-high='&amp;gt;=5';
run;

proc means data=sashelp.cars;
     class cylinders/mlf;
     var mpg_city;
     format cylinders custf.;
run;
&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Tue, 23 Mar 2021 13:06:50 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Macro-Parameter/m-p/728413#M226657</guid>
      <dc:creator>PaigeMiller</dc:creator>
      <dc:date>2021-03-23T13:06:50Z</dc:date>
    </item>
    <item>
      <title>Re: Macro Parameter</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Macro-Parameter/m-p/728474#M226676</link>
      <description>I'll echo &lt;a href="https://communities.sas.com/t5/user/viewprofilepage/user-id/10892"&gt;@PaigeMiller&lt;/a&gt; is saying a  multilabel format is likely a better approach here.</description>
      <pubDate>Tue, 23 Mar 2021 15:43:09 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Macro-Parameter/m-p/728474#M226676</guid>
      <dc:creator>Reeza</dc:creator>
      <dc:date>2021-03-23T15:43:09Z</dc:date>
    </item>
  </channel>
</rss>

