<?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: Wrong calculation in SAS Programming</title>
    <link>https://communities.sas.com/t5/SAS-Programming/Wrong-calculation/m-p/891447#M352166</link>
    <description>&lt;P&gt;Instead of this:&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;     call symput("n",trim(left(intck('month',&amp;amp;start.,&amp;amp;end.))));
	 a=&amp;amp;n.;&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;(Why do you feel you need to create a macro variable &amp;amp;n here within a data step anyway, when a data step variable will do?)&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;use this:&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt; a=intck('month',&amp;amp;start.,&amp;amp;end.);&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
    <pubDate>Tue, 29 Aug 2023 10:06:08 GMT</pubDate>
    <dc:creator>PaigeMiller</dc:creator>
    <dc:date>2023-08-29T10:06:08Z</dc:date>
    <item>
      <title>Wrong calculation</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Wrong-calculation/m-p/891441#M352162</link>
      <description>&lt;P&gt;Hello&lt;/P&gt;
&lt;P&gt;I run this code but I see that there is wrong calculation of variable "a".&lt;/P&gt;
&lt;P&gt;May anyone explain why did it happen and what is the way to solve it?&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;%let YYMM1=2302; 
%let YYMM2=2306;
 
data t1;
     %let start = %sysfunc(inputn(&amp;amp;YYMM1.,yymmn4.));
     %let end   = %sysfunc(inputn(&amp;amp;YYMM2.,yymmn4.));
     call symput("n",trim(left(intck('month',&amp;amp;start.,&amp;amp;end.))));
	 a=&amp;amp;n.;
	 b=MOD(&amp;amp;n.,2);
	 c=&amp;amp;YYMM1.;
	 d=&amp;amp;YYMM2.;
run;
/****Varaible a should get value 4!!!!***/


%let YYMM1=2303; %let YYMM2=2306; 
data t2;
     %let start = %sysfunc(inputn(&amp;amp;YYMM1.,yymmn4.));
     %let end   = %sysfunc(inputn(&amp;amp;YYMM2.,yymmn4.));
     call symput("n",trim(left(intck('month',&amp;amp;start.,&amp;amp;end.))));
	 a=&amp;amp;n.;
	 b=MOD(&amp;amp;n.,2);
	 c=&amp;amp;YYMM1.;
	 d=&amp;amp;YYMM2.;
run;
/****Varaible a should get value 3 but I see value 4!!!!***/

 &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, 29 Aug 2023 08:30:34 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Wrong-calculation/m-p/891441#M352162</guid>
      <dc:creator>Ronein</dc:creator>
      <dc:date>2023-08-29T08:30:34Z</dc:date>
    </item>
    <item>
      <title>Re: Wrong calculation</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Wrong-calculation/m-p/891442#M352163</link>
      <description>&lt;P&gt;Did you read the documentation about the "method" option and how it calculates?&amp;nbsp;&lt;/P&gt;
&lt;P&gt;[Edit:] Correct link:&lt;/P&gt;
&lt;P&gt;&lt;A href="https://documentation.sas.com/doc/en/vdmmlcdc/8.1/lefunctionsref/p1md4mx2crzfaqn14va8kt7qvfhr.htm#n1d9sidj5fym4un19eic1j3zx5hh" target="_blank"&gt;https://documentation.sas.com/doc/en/vdmmlcdc/8.1/lefunctionsref/p1md4mx2crzfaqn14va8kt7qvfhr.htm#n1d9sidj5fym4un19eic1j3zx5hh&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;A href="https://documentation.sas.com/doc/en/vdmmlcdc/8.1/ds2ref/n096g3nwx05g7wn161ax2rdqmlfn.htm#n121oubah6given17jzwtci4ptil" target="_blank" rel="noopener"&gt;&lt;STRIKE&gt;https://documentation.sas.com/doc/en/vdmmlcdc/8.1/ds2ref/n096g3nwx05g7wn161ax2rdqmlfn.htm#n121oubah6given17jzwtci4ptil&lt;/STRIKE&gt;&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Bart&lt;/P&gt;</description>
      <pubDate>Tue, 29 Aug 2023 09:32:09 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Wrong-calculation/m-p/891442#M352163</guid>
      <dc:creator>yabwon</dc:creator>
      <dc:date>2023-08-29T09:32:09Z</dc:date>
    </item>
    <item>
      <title>Re: Wrong calculation</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Wrong-calculation/m-p/891443#M352164</link>
      <description>&lt;P&gt;Macro timing.&lt;/P&gt;
&lt;P&gt;Macro timing.&lt;/P&gt;
&lt;P&gt;Macro timing.&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt; 
data t1;
     %let start = %sysfunc(inputn(&amp;amp;YYMM1.,yymmn4.));
     %let end   = %sysfunc(inputn(&amp;amp;YYMM2.,yymmn4.));
     call symput("n",trim(left(intck('month',&amp;amp;start.,&amp;amp;end.))));
	 a=&amp;amp;n.; /* this is resolved at compile time, so the value from CALL SYMPUT will not have an effect */
	 b=MOD(&amp;amp;n.,2); /* same */
	 c=&amp;amp;YYMM1.;
	 d=&amp;amp;YYMM2.;
run;&lt;/CODE&gt;&lt;/PRE&gt;</description>
      <pubDate>Tue, 29 Aug 2023 09:31:48 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Wrong-calculation/m-p/891443#M352164</guid>
      <dc:creator>Kurt_Bremser</dc:creator>
      <dc:date>2023-08-29T09:31:48Z</dc:date>
    </item>
    <item>
      <title>Re: Wrong calculation</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Wrong-calculation/m-p/891445#M352165</link>
      <description>&lt;P&gt;Kurt's right, with macro timing &lt;STRONG&gt;fixed&lt;/STRONG&gt; it displays:&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="yabwon_0-1693301778382.png" style="width: 400px;"&gt;&lt;img src="https://communities.sas.com/t5/image/serverpage/image-id/87245i27438BA54050BF28/image-size/medium?v=v2&amp;amp;px=400" role="button" title="yabwon_0-1693301778382.png" alt="yabwon_0-1693301778382.png" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;	 a=symgetn('n');
	 b=MOD(a,2);
	 c=symgetn('YYMM1');
	 d=symgetn('YYMM2');
&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Bart&lt;/P&gt;</description>
      <pubDate>Tue, 29 Aug 2023 09:37:52 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Wrong-calculation/m-p/891445#M352165</guid>
      <dc:creator>yabwon</dc:creator>
      <dc:date>2023-08-29T09:37:52Z</dc:date>
    </item>
    <item>
      <title>Re: Wrong calculation</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Wrong-calculation/m-p/891447#M352166</link>
      <description>&lt;P&gt;Instead of this:&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;     call symput("n",trim(left(intck('month',&amp;amp;start.,&amp;amp;end.))));
	 a=&amp;amp;n.;&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;(Why do you feel you need to create a macro variable &amp;amp;n here within a data step anyway, when a data step variable will do?)&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;use this:&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt; a=intck('month',&amp;amp;start.,&amp;amp;end.);&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Tue, 29 Aug 2023 10:06:08 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Wrong-calculation/m-p/891447#M352166</guid>
      <dc:creator>PaigeMiller</dc:creator>
      <dc:date>2023-08-29T10:06:08Z</dc:date>
    </item>
    <item>
      <title>Re: Wrong calculation</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Wrong-calculation/m-p/891450#M352167</link>
      <description>&lt;P&gt;And I would never use macro variables to keep values across actions in a data step. Within a single observation it is simple insanity, and across observations one uses RETAINed data step variables.&lt;/P&gt;</description>
      <pubDate>Tue, 29 Aug 2023 10:01:29 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Wrong-calculation/m-p/891450#M352167</guid>
      <dc:creator>Kurt_Bremser</dc:creator>
      <dc:date>2023-08-29T10:01:29Z</dc:date>
    </item>
    <item>
      <title>Re: Wrong calculation</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Wrong-calculation/m-p/891476#M352178</link>
      <description>&lt;P&gt;Perhaps this is intentionally an exercise on macro evaluation, but, if not, you might consider using the DATA step, which is faster, easier to debug, and more versatile. Perhaps something like this?&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;%let YYMM1=2302; 
%let YYMM2=2306;
 
data t1;
    format start end DATE9.;
    start = inputn("&amp;amp;YYMM1.",'yymmn4.');
    end   = inputn("&amp;amp;YYMM2.",'yymmn4.');
    n = intck('month',start,end);
   a=n;
   b=MOD(n,2);
   c=&amp;amp;YYMM1.;
   d=&amp;amp;YYMM2.;
run;
&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Tue, 29 Aug 2023 12:52:19 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Wrong-calculation/m-p/891476#M352178</guid>
      <dc:creator>Rick_SAS</dc:creator>
      <dc:date>2023-08-29T12:52:19Z</dc:date>
    </item>
  </channel>
</rss>

