<?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: Do loop inside Macro not working in SAS Programming</title>
    <link>https://communities.sas.com/t5/SAS-Programming/Do-loop-inside-Macro-not-working/m-p/509072#M136798</link>
    <description>&lt;P&gt;At least an %end statement is missing to close &lt;/P&gt;
&lt;PRE class=" language-sas"&gt;&lt;CODE class="  language-sas"&gt;&lt;SPAN class="token macrostatement"&gt;%if&lt;/SPAN&gt; &lt;SPAN class="token operator"&gt;&amp;amp;&lt;/SPAN&gt;cnt_crr_saa_limit&lt;SPAN class="token punctuation"&gt;.&lt;/SPAN&gt; &lt;SPAN class="token operator"&gt;ne&lt;/SPAN&gt; &lt;SPAN class="token number"&gt;0&lt;/SPAN&gt; &lt;SPAN class="token macrostatement"&gt;%then&lt;/SPAN&gt;&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;The following simplification runs without errors. So the problem must be before the code posted.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;%macro box;
   %if &amp;amp;cnt_crr_saa_limit. ne 0 %then %Do;

      %do i=1 %to &amp;amp;cnt_crr_saa_limit;
         %put &amp;amp;=i;
      %end;
   %end;
%mend;

%let cnt_crr_saa_limit =        3;
options symbolgen mprint mlogic;

%box;&lt;/CODE&gt;&lt;/PRE&gt;</description>
    <pubDate>Wed, 31 Oct 2018 12:03:23 GMT</pubDate>
    <dc:creator>andreas_lds</dc:creator>
    <dc:date>2018-10-31T12:03:23Z</dc:date>
    <item>
      <title>Do loop inside Macro not working</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Do-loop-inside-Macro-not-working/m-p/509065#M136796</link>
      <description>&lt;P&gt;Hello All,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Below is the part of the code which I use to create different data set based on the macro variable 'cnt_crr_saa_limit' value using Do loop but I am getting below error messages. Can any one help me out?&lt;/P&gt;&lt;BLOCKQUOTE&gt;&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;/* Do process only when some records available in cr_saa_rating_benchmrk */
%if &amp;amp;cnt_crr_saa_limit. ne 0 %then
	%Do;
		%do i=1 %to &amp;amp;cnt_crr_saa_limit;

			data grp_bbb_below_&amp;amp;i;
				set work.cr_saa_rating_benchmrk
					(keep=portfolio_name bbb_below_benchmark bbb_below_leeway bbb_below_current_level total_exposure
					rename=(bbb_below_benchmark=benchmark bbb_below_leeway=leeway bbb_below_current_level=current_level)
					firstobs=&amp;amp;i obs=&amp;amp;i);
				length rating $ 50;
				rating = 'BBB &amp;amp; Below';
			run;


			data grp_bb_below_&amp;amp;i;
				set work.cr_saa_rating_benchmrk
					(keep=portfolio_name bb_below_benchmark bb_below_leeway bb_below_current_level total_exposure
					rename=(bb_below_benchmark=benchmark bb_below_leeway=leeway bb_below_current_level=current_level)
					firstobs=&amp;amp;i obs=&amp;amp;i);
				length rating $ 50;
				rating = 'BB &amp;amp; Below';
			run;

			data grp_nr_&amp;amp;i;
				set work.cr_saa_rating_benchmrk
					(keep=portfolio_name nr_benchmark nr_leeway nr_current_level total_exposure
					rename=(nr_benchmark=benchmark nr_leeway=leeway nr_current_level=current_level)
					firstobs=&amp;amp;i obs=&amp;amp;i);
				length rating $ 50;
				rating = 'Not Rated';
			run;

		%end;&lt;/CODE&gt;&lt;/PRE&gt;&lt;P&gt;ERROR;&lt;/P&gt;&lt;P&gt;&lt;FONT color="#FF0000"&gt;74&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; %if &amp;amp;cnt_crr_saa_limit. ne 0 %then&lt;/FONT&gt;&lt;BR /&gt;&lt;FONT color="#FF0000"&gt;SYMBOLGEN:&amp;nbsp; Macro variable CNT_CRR_SAA_LIMIT resolves to&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 3&lt;/FONT&gt;&lt;BR /&gt;&lt;FONT color="#FF0000"&gt;75&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;%Do;&lt;/FONT&gt;&lt;BR /&gt;&lt;FONT color="#FF0000"&gt;76&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;%do i=1 %to &amp;amp;cnt_crr_saa_limit;&lt;/FONT&gt;&lt;BR /&gt;&lt;FONT color="#FF0000"&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; _&lt;/FONT&gt;&lt;BR /&gt;&lt;FONT color="#FF0000"&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; 180&lt;/FONT&gt;&lt;BR /&gt;&lt;FONT color="#FF0000"&gt;SYMBOLGEN:&amp;nbsp; Macro variable CNT_CRR_SAA_LIMIT resolves to&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 3&lt;/FONT&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;FONT color="#FF0000"&gt;ERROR 180-322: Statement is not valid or it is used out of proper order.&lt;/FONT&gt;&lt;/P&gt;&lt;/BLOCKQUOTE&gt;</description>
      <pubDate>Wed, 31 Oct 2018 11:49:25 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Do-loop-inside-Macro-not-working/m-p/509065#M136796</guid>
      <dc:creator>arunrami</dc:creator>
      <dc:date>2018-10-31T11:49:25Z</dc:date>
    </item>
    <item>
      <title>Re: Do loop inside Macro not working</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Do-loop-inside-Macro-not-working/m-p/509071#M136797</link>
      <description>&lt;P&gt;Iterative %do is not allowed in open code, it can only be used in a defined macro.&lt;/P&gt;</description>
      <pubDate>Wed, 31 Oct 2018 12:01:19 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Do-loop-inside-Macro-not-working/m-p/509071#M136797</guid>
      <dc:creator>Kurt_Bremser</dc:creator>
      <dc:date>2018-10-31T12:01:19Z</dc:date>
    </item>
    <item>
      <title>Re: Do loop inside Macro not working</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Do-loop-inside-Macro-not-working/m-p/509072#M136798</link>
      <description>&lt;P&gt;At least an %end statement is missing to close &lt;/P&gt;
&lt;PRE class=" language-sas"&gt;&lt;CODE class="  language-sas"&gt;&lt;SPAN class="token macrostatement"&gt;%if&lt;/SPAN&gt; &lt;SPAN class="token operator"&gt;&amp;amp;&lt;/SPAN&gt;cnt_crr_saa_limit&lt;SPAN class="token punctuation"&gt;.&lt;/SPAN&gt; &lt;SPAN class="token operator"&gt;ne&lt;/SPAN&gt; &lt;SPAN class="token number"&gt;0&lt;/SPAN&gt; &lt;SPAN class="token macrostatement"&gt;%then&lt;/SPAN&gt;&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;The following simplification runs without errors. So the problem must be before the code posted.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;%macro box;
   %if &amp;amp;cnt_crr_saa_limit. ne 0 %then %Do;

      %do i=1 %to &amp;amp;cnt_crr_saa_limit;
         %put &amp;amp;=i;
      %end;
   %end;
%mend;

%let cnt_crr_saa_limit =        3;
options symbolgen mprint mlogic;

%box;&lt;/CODE&gt;&lt;/PRE&gt;</description>
      <pubDate>Wed, 31 Oct 2018 12:03:23 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Do-loop-inside-Macro-not-working/m-p/509072#M136798</guid>
      <dc:creator>andreas_lds</dc:creator>
      <dc:date>2018-10-31T12:03:23Z</dc:date>
    </item>
    <item>
      <title>Re: Do loop inside Macro not working</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Do-loop-inside-Macro-not-working/m-p/509073#M136799</link>
      <description>&lt;P&gt;you should use it inside the macro body&amp;nbsp; in addition to every %if statement should have close %end for example&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;%macro test;&lt;/P&gt;&lt;PRE class="language-sas"&gt;&lt;CODE class="language-sas"&gt;&lt;SPAN class="token macrostatement"&gt;%if&lt;/SPAN&gt; &lt;SPAN class="token operator"&gt;&amp;amp;&lt;/SPAN&gt;cnt_crr_saa_limit&lt;SPAN class="token punctuation"&gt;.&lt;/SPAN&gt; &lt;SPAN class="token operator"&gt;ne&lt;/SPAN&gt; &lt;SPAN class="token number"&gt;0&lt;/SPAN&gt; &lt;SPAN class="token macrostatement"&gt;%then    &lt;BR /&gt;&lt;/SPAN&gt;&lt;SPAN class="token macrostatement"&gt;%Do&lt;/SPAN&gt;&lt;SPAN class="token punctuation"&gt;;      &lt;BR /&gt;  Your CODE          &lt;BR /&gt;%end;&lt;BR /&gt;&lt;/SPAN&gt;&lt;/CODE&gt;&lt;/PRE&gt;&lt;P&gt;%mend test ;&lt;/P&gt;&lt;P&gt;%test;&lt;/P&gt;</description>
      <pubDate>Wed, 31 Oct 2018 12:22:15 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Do-loop-inside-Macro-not-working/m-p/509073#M136799</guid>
      <dc:creator>MSMM</dc:creator>
      <dc:date>2018-10-31T12:22:15Z</dc:date>
    </item>
    <item>
      <title>Re: Do loop inside Macro not working</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Do-loop-inside-Macro-not-working/m-p/509080#M136804</link>
      <description>&lt;P&gt;Here is the actual code, I have declared macro&lt;/P&gt;&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;%macro Info;
proc sql noprint;
		*connect to oracle (user=&amp;amp;ora_user. password="&amp;amp;ora_pw." path=&amp;amp;ora_path.);
		insert into work.cr_saa_rating_benchmrk 
			/*		select * from connection to oracle (*/
		select * from work.A;

		/*	DISCONNECT FROM oracle;*/
	quit;

	/*proc print data=work.cr_saa_rating_benchmrk;*/
	proc sql noprint;
		select count(*) into :cnt_crr_saa_limit from work.cr_saa_rating_benchmrk;
	quit;

	%put #### number of records read from REP_SAA_LIMIT#### &amp;amp;cnt_crr_saa_limit.;

	/* Do process only when some records available in cr_saa_rating_benchmrk */
	%if &amp;amp;cnt_crr_saa_limit. ne 0 %then
		%do;
			%do i=1 %to &amp;amp;cnt_crr_saa_limit;

				data grp_bbb_below_&amp;amp;i;
					set work.cr_saa_rating_benchmrk
						(keep=portfolio_name bbb_below_benchmark bbb_below_leeway bbb_below_current_level total_exposure
						rename=(bbb_below_benchmark=benchmark bbb_below_leeway=leeway bbb_below_current_level=current_level)
						firstobs=&amp;amp;i obs=&amp;amp;i);
					length rating $ 50;
					rating = 'BBB &amp;amp; Below';
				run;

				data grp_bb_below_&amp;amp;i;
					set work.cr_saa_rating_benchmrk
						(keep=portfolio_name bb_below_benchmark bb_below_leeway bb_below_current_level total_exposure
						rename=(bb_below_benchmark=benchmark bb_below_leeway=leeway bb_below_current_level=current_level)
						firstobs=&amp;amp;i obs=&amp;amp;i);
					length rating $ 50;
					rating = 'BB &amp;amp; Below';
				run;

				data grp_nr_&amp;amp;i;
					set work.cr_saa_rating_benchmrk
						(keep=portfolio_name nr_benchmark nr_leeway nr_current_level total_exposure
						rename=(nr_benchmark=benchmark nr_leeway=leeway nr_current_level=current_level)
						firstobs=&amp;amp;i obs=&amp;amp;i);
					length rating $ 50;
					rating = 'Not Rated';
				run;

		%end;
%end;
%mend;
%info;&lt;/CODE&gt;&lt;/PRE&gt;</description>
      <pubDate>Wed, 31 Oct 2018 12:37:05 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Do-loop-inside-Macro-not-working/m-p/509080#M136804</guid>
      <dc:creator>arunrami</dc:creator>
      <dc:date>2018-10-31T12:37:05Z</dc:date>
    </item>
    <item>
      <title>Re: Do loop inside Macro not working</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Do-loop-inside-Macro-not-working/m-p/509082#M136805</link>
      <description>&lt;P&gt;When I run that code as posted, I only get ERRORs from the Base SAS code because of the missing libs/datasets, but NO problem at all with the macro code.&lt;/P&gt;
&lt;P&gt;Please post the log from this code &lt;U&gt;&lt;EM&gt;as is&lt;/EM&gt;&lt;/U&gt;.&lt;/P&gt;
&lt;BLOCKQUOTE&gt;&lt;HR /&gt;&lt;a href="https://communities.sas.com/t5/user/viewprofilepage/user-id/200330"&gt;@arunrami&lt;/a&gt;&amp;nbsp;wrote:&lt;BR /&gt;
&lt;P&gt;Here is the actual code, I have declared macro&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;%macro Info;
proc sql noprint;
		*connect to oracle (user=&amp;amp;ora_user. password="&amp;amp;ora_pw." path=&amp;amp;ora_path.);
		insert into work.cr_saa_rating_benchmrk 
			/*		select * from connection to oracle (*/
		select * from work.A;

		/*	DISCONNECT FROM oracle;*/
	quit;

	/*proc print data=work.cr_saa_rating_benchmrk;*/
	proc sql noprint;
		select count(*) into :cnt_crr_saa_limit from work.cr_saa_rating_benchmrk;
	quit;

	%put #### number of records read from REP_SAA_LIMIT#### &amp;amp;cnt_crr_saa_limit.;

	/* Do process only when some records available in cr_saa_rating_benchmrk */
	%if &amp;amp;cnt_crr_saa_limit. ne 0 %then
		%do;
			%do i=1 %to &amp;amp;cnt_crr_saa_limit;

				data grp_bbb_below_&amp;amp;i;
					set work.cr_saa_rating_benchmrk
						(keep=portfolio_name bbb_below_benchmark bbb_below_leeway bbb_below_current_level total_exposure
						rename=(bbb_below_benchmark=benchmark bbb_below_leeway=leeway bbb_below_current_level=current_level)
						firstobs=&amp;amp;i obs=&amp;amp;i);
					length rating $ 50;
					rating = 'BBB &amp;amp; Below';
				run;

				data grp_bb_below_&amp;amp;i;
					set work.cr_saa_rating_benchmrk
						(keep=portfolio_name bb_below_benchmark bb_below_leeway bb_below_current_level total_exposure
						rename=(bb_below_benchmark=benchmark bb_below_leeway=leeway bb_below_current_level=current_level)
						firstobs=&amp;amp;i obs=&amp;amp;i);
					length rating $ 50;
					rating = 'BB &amp;amp; Below';
				run;

				data grp_nr_&amp;amp;i;
					set work.cr_saa_rating_benchmrk
						(keep=portfolio_name nr_benchmark nr_leeway nr_current_level total_exposure
						rename=(nr_benchmark=benchmark nr_leeway=leeway nr_current_level=current_level)
						firstobs=&amp;amp;i obs=&amp;amp;i);
					length rating $ 50;
					rating = 'Not Rated';
				run;

		%end;
%end;
%mend;
%info;&lt;/CODE&gt;&lt;/PRE&gt;
&lt;HR /&gt;&lt;/BLOCKQUOTE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Wed, 31 Oct 2018 12:43:53 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Do-loop-inside-Macro-not-working/m-p/509082#M136805</guid>
      <dc:creator>Kurt_Bremser</dc:creator>
      <dc:date>2018-10-31T12:43:53Z</dc:date>
    </item>
    <item>
      <title>Re: Do loop inside Macro not working</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Do-loop-inside-Macro-not-working/m-p/509086#M136807</link>
      <description>&lt;P&gt;Hi Brem, You are right. I was incorrectly using data step with dataline statment , thats what the cause of an error. Now working fine.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Thanks!! &lt;span class="lia-unicode-emoji" title=":slightly_smiling_face:"&gt;🙂&lt;/span&gt;&lt;/P&gt;</description>
      <pubDate>Wed, 31 Oct 2018 12:53:37 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Do-loop-inside-Macro-not-working/m-p/509086#M136807</guid>
      <dc:creator>arunrami</dc:creator>
      <dc:date>2018-10-31T12:53:37Z</dc:date>
    </item>
  </channel>
</rss>

