<?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: Value not Setting in Macro or Loop in SAS Programming</title>
    <link>https://communities.sas.com/t5/SAS-Programming/Value-not-Setting-in-Macro-or-Loop/m-p/527342#M143754</link>
    <description>&lt;P&gt;How do you test for the presence/contents of the macro variable?&lt;/P&gt;
&lt;P&gt;I see two possible causes&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;macro scope (global vs local)&lt;/LI&gt;
&lt;LI&gt;timing if you test before a step boundary has been reached (the code from the call execute has not yet been able to run)&lt;/LI&gt;
&lt;/UL&gt;</description>
    <pubDate>Tue, 15 Jan 2019 15:40:02 GMT</pubDate>
    <dc:creator>Kurt_Bremser</dc:creator>
    <dc:date>2019-01-15T15:40:02Z</dc:date>
    <item>
      <title>Value not Setting in Macro or Loop</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Value-not-Setting-in-Macro-or-Loop/m-p/527323#M143742</link>
      <description>&lt;P&gt;I have a stored process that uses a looping macro technique to look to loop through all departments within a college.&amp;nbsp; The loop stores the max academic period for each cycle.&amp;nbsp; Using:&lt;/P&gt;
&lt;P&gt;proc sql;&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; select max(academic_period) into: max_academic_period from Enrollment;&lt;/P&gt;
&lt;P&gt;quit;&lt;/P&gt;
&lt;P&gt;The structure contains a number of statements like %str(“Text Goes here.”).&amp;nbsp;&lt;/P&gt;
&lt;P&gt;When calling the macro one time without a loop max_academic_period is set.&amp;nbsp; When I run this with the loop table Enrollment has data but max_academic_period is not set.&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;The single call is:&lt;/P&gt;
&lt;P&gt;%callStudentBody(No, Music);&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;The loop call is&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;data&lt;/STRONG&gt; _null_; set departmentList;&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;&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;&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&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; length str $ &lt;STRONG&gt;200&lt;/STRONG&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;&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;&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;&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;/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; str =cats('%callStudentBody(No, %bquote(',department,'))');&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;&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;&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;&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; call execute(str);&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;&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;&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;run&lt;/STRONG&gt;;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;I cannot post the entire code in this forum.&lt;/P&gt;</description>
      <pubDate>Tue, 15 Jan 2019 15:01:23 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Value-not-Setting-in-Macro-or-Loop/m-p/527323#M143742</guid>
      <dc:creator>DavidPhillips2</dc:creator>
      <dc:date>2019-01-15T15:01:23Z</dc:date>
    </item>
    <item>
      <title>Re: Value not Setting in Macro or Loop</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Value-not-Setting-in-Macro-or-Loop/m-p/527326#M143743</link>
      <description>&lt;BLOCKQUOTE&gt;
&lt;P&gt;&lt;SPAN&gt;I cannot post the entire code in this forum.&lt;/SPAN&gt;&lt;/P&gt;
&lt;/BLOCKQUOTE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;It's really difficult (probably impossible) to debug macro code that also uses CALL EXECUTE that we can't see.&lt;/P&gt;</description>
      <pubDate>Tue, 15 Jan 2019 15:09:22 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Value-not-Setting-in-Macro-or-Loop/m-p/527326#M143743</guid>
      <dc:creator>PaigeMiller</dc:creator>
      <dc:date>2019-01-15T15:09:22Z</dc:date>
    </item>
    <item>
      <title>Re: Value not Setting in Macro or Loop</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Value-not-Setting-in-Macro-or-Loop/m-p/527328#M143744</link>
      <description>&lt;P&gt;I am asking if there is generically something I can look into for why a call execute would produce two different results.&amp;nbsp; One when I feed the logic the same values manually and one when I use a call execute.&lt;/P&gt;</description>
      <pubDate>Tue, 15 Jan 2019 15:18:27 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Value-not-Setting-in-Macro-or-Loop/m-p/527328#M143744</guid>
      <dc:creator>DavidPhillips2</dc:creator>
      <dc:date>2019-01-15T15:18:27Z</dc:date>
    </item>
    <item>
      <title>Re: Value not Setting in Macro or Loop</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Value-not-Setting-in-Macro-or-Loop/m-p/527330#M143746</link>
      <description>&lt;P&gt;There's plenty of debugging you can do. Make sure you have at the top of your code.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;OPTIONS MPRINT SYMBOLGEN MLOGIC;&lt;/CODE&gt;&lt;/PRE&gt;</description>
      <pubDate>Tue, 15 Jan 2019 15:22:27 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Value-not-Setting-in-Macro-or-Loop/m-p/527330#M143746</guid>
      <dc:creator>PaigeMiller</dc:creator>
      <dc:date>2019-01-15T15:22:27Z</dc:date>
    </item>
    <item>
      <title>Re: Value not Setting in Macro or Loop</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Value-not-Setting-in-Macro-or-Loop/m-p/527333#M143748</link>
      <description>&lt;P&gt;This is the call that is not pulling a max anything:&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;/*this table has rows*/&lt;BR /&gt;Proc SQL;&lt;BR /&gt; Create table Enrollment as &lt;BR /&gt; Select Academic_year, Term, Student_level, degree_level, degree_level_id,Student_population, academic_period,&lt;BR /&gt; College_desc, schev_ethnicity_desc, Minority_group as Minority_group2, Gender_desc, &lt;BR /&gt; students_enrolled as Headcount, credit_hours, annual_headcount, FTE &lt;BR /&gt; From mytable&lt;BR /&gt; Where academic_year in ("2012-2013","2013-2014","2014-2015","2015-2016","2016-2017", "2017-2018", "2018-2019") and &lt;BR /&gt; college_desc = "Arts" and department ="Art Education" &lt;BR /&gt; order by academic_year, Student_level desc;&lt;BR /&gt;quit;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;/*this does not produce an error in the log but doesn't seem to do anything.*/&lt;BR /&gt;proc sql;&lt;BR /&gt; select max(academic_period) into: max_academic_period from Enrollment;&lt;BR /&gt;quit;&lt;/P&gt;</description>
      <pubDate>Tue, 15 Jan 2019 15:24:52 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Value-not-Setting-in-Macro-or-Loop/m-p/527333#M143748</guid>
      <dc:creator>DavidPhillips2</dc:creator>
      <dc:date>2019-01-15T15:24:52Z</dc:date>
    </item>
    <item>
      <title>Re: Value not Setting in Macro or Loop</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Value-not-Setting-in-Macro-or-Loop/m-p/527340#M143753</link>
      <description>&lt;P&gt;Explain "doesn't seem to do anything".&lt;/P&gt;
&lt;P&gt;&lt;BR /&gt;What do you get if you execute&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;%put &amp;amp;=max_academic_period;&lt;/CODE&gt;&lt;/PRE&gt;</description>
      <pubDate>Tue, 15 Jan 2019 15:42:32 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Value-not-Setting-in-Macro-or-Loop/m-p/527340#M143753</guid>
      <dc:creator>PaigeMiller</dc:creator>
      <dc:date>2019-01-15T15:42:32Z</dc:date>
    </item>
    <item>
      <title>Re: Value not Setting in Macro or Loop</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Value-not-Setting-in-Macro-or-Loop/m-p/527342#M143754</link>
      <description>&lt;P&gt;How do you test for the presence/contents of the macro variable?&lt;/P&gt;
&lt;P&gt;I see two possible causes&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;macro scope (global vs local)&lt;/LI&gt;
&lt;LI&gt;timing if you test before a step boundary has been reached (the code from the call execute has not yet been able to run)&lt;/LI&gt;
&lt;/UL&gt;</description>
      <pubDate>Tue, 15 Jan 2019 15:40:02 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Value-not-Setting-in-Macro-or-Loop/m-p/527342#M143754</guid>
      <dc:creator>Kurt_Bremser</dc:creator>
      <dc:date>2019-01-15T15:40:02Z</dc:date>
    </item>
    <item>
      <title>Re: Value not Setting in Macro or Loop</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Value-not-Setting-in-Macro-or-Loop/m-p/527346#M143756</link>
      <description>&lt;P&gt;There is a generic issue, although it's difficult to tell how that applies here.&amp;nbsp; When CALL EXECUTE adds statements to a program, the program is in the middle of a DATA step.&amp;nbsp; So any DATA or PROC statements that get added just stack up and wait for the current DATA step to finish.&amp;nbsp; However, any macro language statements execute right away.&amp;nbsp; The order changes.&amp;nbsp; We can't see what macro language statements are contained within %CallStudentBody, but any of those execute right away without waiting for the current DATA step to finish.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;If you determine that is the issue, the usual solution is to apply %nrstr within CALL EXECUTE.&amp;nbsp; But first determine if that is actually the problem.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Tue, 15 Jan 2019 15:50:03 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Value-not-Setting-in-Macro-or-Loop/m-p/527346#M143756</guid>
      <dc:creator>Astounding</dc:creator>
      <dc:date>2019-01-15T15:50:03Z</dc:date>
    </item>
    <item>
      <title>Re: Value not Setting in Macro or Loop</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Value-not-Setting-in-Macro-or-Loop/m-p/527348#M143757</link>
      <description>&lt;P&gt;There is timing problem when using CALL EXECUTE() to call a macro. It is an issue with macros that modify macro variables from data (call symputx() or select ... into) that are then used to control what code gets generated later in the macro.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;If you call the macro like this:&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;call execute('%mymacro(xxx)');&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;Then SAS will execute the macro and put the generated code onto the stack to run after the current data step finishes.&amp;nbsp; So any decisions on values of macro variables is done BEFORE the code that was supposed to set the macro variables has run.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;You can delay this by using %NRSTR() macro function, like this:&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;call execute('%nrstr(%mymacro)(xxx)');&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;That way just the call to the macro is placed onto the stack to execute after the data step stops.&lt;/P&gt;</description>
      <pubDate>Tue, 15 Jan 2019 15:51:17 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Value-not-Setting-in-Macro-or-Loop/m-p/527348#M143757</guid>
      <dc:creator>Tom</dc:creator>
      <dc:date>2019-01-15T15:51:17Z</dc:date>
    </item>
    <item>
      <title>Re: Value not Setting in Macro or Loop</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Value-not-Setting-in-Macro-or-Loop/m-p/527365#M143763</link>
      <description>&lt;BLOCKQUOTE&gt;&lt;HR /&gt;&lt;a href="https://communities.sas.com/t5/user/viewprofilepage/user-id/5059"&gt;@DavidPhillips2&lt;/a&gt;&amp;nbsp;wrote:&lt;BR /&gt;
&lt;P&gt;I have a stored process that uses a looping macro technique to look to loop through all departments within a college.&amp;nbsp; The loop stores the max academic period for each cycle.&amp;nbsp; Using:&lt;/P&gt;
&lt;P&gt;proc sql;&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; select max(academic_period) into: max_academic_period from Enrollment;&lt;/P&gt;
&lt;P&gt;quit;&lt;/P&gt;
&lt;P&gt;The structure contains a number of statements like %str(“Text Goes here.”).&amp;nbsp;&lt;/P&gt;
&lt;P&gt;When calling the macro one time without a loop max_academic_period is set.&amp;nbsp; When I run this with the loop table Enrollment has data but max_academic_period is not set.&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;The single call is:&lt;/P&gt;
&lt;P&gt;%callStudentBody(No, Music);&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;The loop call is&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;data&lt;/STRONG&gt; _null_; set departmentList;&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;&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;&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&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; length str $ &lt;STRONG&gt;200&lt;/STRONG&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;&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;&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;&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;/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; str =cats('%callStudentBody(No, %bquote(',department,'))');&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;&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;&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;&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; call execute(str);&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;&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;&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;run&lt;/STRONG&gt;;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;I cannot post the entire code in this forum.&lt;/P&gt;
&lt;HR /&gt;&lt;/BLOCKQUOTE&gt;
&lt;P&gt;It may be worth it to write the strings to a text file and the use %include to execute the code.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;That type of values are in the variable academic_period?&lt;/P&gt;</description>
      <pubDate>Tue, 15 Jan 2019 16:29:21 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Value-not-Setting-in-Macro-or-Loop/m-p/527365#M143763</guid>
      <dc:creator>ballardw</dc:creator>
      <dc:date>2019-01-15T16:29:21Z</dc:date>
    </item>
    <item>
      <title>Re: Value not Setting in Macro or Loop</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Value-not-Setting-in-Macro-or-Loop/m-p/527394#M143768</link>
      <description>&lt;BLOCKQUOTE&gt;&lt;HR /&gt;&lt;a href="https://communities.sas.com/t5/user/viewprofilepage/user-id/159"&gt;@Tom&lt;/a&gt;&amp;nbsp;wrote:&lt;BR /&gt;
&lt;P&gt;There is timing problem when using CALL EXECUTE() to call a macro. It is an issue with macros that modify macro variables from data (call symputx() or select ... into) that are then used to control what code gets generated later in the macro.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;If you call the macro like this:&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;call execute('%mymacro(xxx)');&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;Then SAS will execute the macro and put the generated code onto the stack to run after the current data step finishes.&amp;nbsp; So any decisions on values of macro variables is done BEFORE the code that was supposed to set the macro variables has run.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;You can delay this by using %NRSTR() macro function, like this:&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;call execute('%nrstr(%mymacro)(xxx)');&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;That way just the call to the macro is placed onto the stack to execute after the data step stops.&lt;/P&gt;
&lt;HR /&gt;&lt;/BLOCKQUOTE&gt;
&lt;P&gt;In addition to &lt;a href="https://communities.sas.com/t5/user/viewprofilepage/user-id/159"&gt;@Tom&lt;/a&gt;&amp;nbsp;reply that I'm 99.9% sure is the correct answer I would consider writing the macro calls to&amp;nbsp;file that you %INC, and NOT use CALL EXECUTE.&lt;/P&gt;</description>
      <pubDate>Tue, 15 Jan 2019 17:10:59 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Value-not-Setting-in-Macro-or-Loop/m-p/527394#M143768</guid>
      <dc:creator>data_null__</dc:creator>
      <dc:date>2019-01-15T17:10:59Z</dc:date>
    </item>
    <item>
      <title>Re: Value not Setting in Macro or Loop</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Value-not-Setting-in-Macro-or-Loop/m-p/527473#M143806</link>
      <description>&lt;P&gt;Academic period is character e.g.&lt;/P&gt;
&lt;P&gt;201810&lt;/P&gt;
&lt;P&gt;201820&lt;/P&gt;
&lt;P&gt;201830&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Tue, 15 Jan 2019 19:38:05 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Value-not-Setting-in-Macro-or-Loop/m-p/527473#M143806</guid>
      <dc:creator>DavidPhillips2</dc:creator>
      <dc:date>2019-01-15T19:38:05Z</dc:date>
    </item>
    <item>
      <title>Re: Value not Setting in Macro or Loop</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Value-not-Setting-in-Macro-or-Loop/m-p/527476#M143808</link>
      <description>&lt;PRE class=" language-sas"&gt;&lt;CODE class="  language-sas"&gt;&lt;SPAN class="token string"&gt;%nrstr &lt;/SPAN&gt;&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;seems to be in the right direction.&amp;nbsp; I am testing using it.&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Tue, 15 Jan 2019 19:51:10 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Value-not-Setting-in-Macro-or-Loop/m-p/527476#M143808</guid>
      <dc:creator>DavidPhillips2</dc:creator>
      <dc:date>2019-01-15T19:51:10Z</dc:date>
    </item>
    <item>
      <title>Re: Value not Setting in Macro or Loop</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Value-not-Setting-in-Macro-or-Loop/m-p/527477#M143809</link>
      <description>&lt;PRE class=" language-sas"&gt;&lt;CODE class="  language-sas"&gt;&lt;SPAN class="token string"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;nrstr seems to be in the right direction.&amp;nbsp; I am testing using it.&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Tue, 15 Jan 2019 19:51:37 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Value-not-Setting-in-Macro-or-Loop/m-p/527477#M143809</guid>
      <dc:creator>DavidPhillips2</dc:creator>
      <dc:date>2019-01-15T19:51:37Z</dc:date>
    </item>
    <item>
      <title>Re: Value not Setting in Macro or Loop</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Value-not-Setting-in-Macro-or-Loop/m-p/527479#M143810</link>
      <description>&lt;P&gt;I do find that writing the generated code to a file is usually much easier to do than using CALL EXECUTE().&amp;nbsp; You don't have to worry about concatenating values.&amp;nbsp; And you can run the code generation step and examine the file to make sure your logic is correct.&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;filename code temp;
data _null_;
  set departmentList;
  file code;
  put '%callStudentBody(No, %bquote(' department +(-1) '))';
run; 
%include code / source2;&lt;/CODE&gt;&lt;/PRE&gt;</description>
      <pubDate>Tue, 15 Jan 2019 19:58:02 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Value-not-Setting-in-Macro-or-Loop/m-p/527479#M143810</guid>
      <dc:creator>Tom</dc:creator>
      <dc:date>2019-01-15T19:58:02Z</dc:date>
    </item>
    <item>
      <title>Re: Value not Setting in Macro or Loop</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Value-not-Setting-in-Macro-or-Loop/m-p/527825#M143966</link>
      <description>&lt;P&gt;I used this&lt;/P&gt;
&lt;PRE class=" language-sas"&gt;&lt;CODE class="  language-sas"&gt;&lt;SPAN class="token statement"&gt;filename&lt;/SPAN&gt; code temp&lt;SPAN class="token punctuation"&gt;;&lt;/SPAN&gt;
&lt;SPAN class="token procnames"&gt;data&lt;/SPAN&gt; _null_&lt;SPAN class="token punctuation"&gt;;&lt;/SPAN&gt;
  &lt;SPAN class="token keyword"&gt;set&lt;/SPAN&gt; departmentList&lt;SPAN class="token punctuation"&gt;;&lt;/SPAN&gt;
  &lt;SPAN class="token statement"&gt;file&lt;/SPAN&gt; code&lt;SPAN class="token punctuation"&gt;;&lt;/SPAN&gt;
  &lt;SPAN class="token keyword"&gt;put&lt;/SPAN&gt; &lt;SPAN class="token string"&gt;'%callStudentBody(No, %bquote('&lt;/SPAN&gt; department &lt;SPAN class="token operator"&gt;+&lt;/SPAN&gt;&lt;SPAN class="token punctuation"&gt;(&lt;/SPAN&gt;&lt;SPAN class="token number"&gt;-1&lt;/SPAN&gt;&lt;SPAN class="token punctuation"&gt;)&lt;/SPAN&gt; &lt;SPAN class="token string"&gt;'))'&lt;/SPAN&gt;&lt;SPAN class="token punctuation"&gt;;&lt;/SPAN&gt;
&lt;SPAN class="token procnames"&gt;run&lt;/SPAN&gt;&lt;SPAN class="token punctuation"&gt;;&lt;/SPAN&gt; 
&lt;SPAN class="token macrostatement"&gt;%include&lt;/SPAN&gt; code &lt;SPAN class="token operator"&gt;/&lt;/SPAN&gt; source2&lt;SPAN class="token punctuation"&gt;;&lt;/SPAN&gt;&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;with&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;OPTIONS&lt;/STRONG&gt; MPRINT SYMBOLGEN MLOGIC;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Wed, 16 Jan 2019 20:14:30 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Value-not-Setting-in-Macro-or-Loop/m-p/527825#M143966</guid>
      <dc:creator>DavidPhillips2</dc:creator>
      <dc:date>2019-01-16T20:14:30Z</dc:date>
    </item>
  </channel>
</rss>

