<?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 Macro variable not resolving as per the need...!!! file_cnt in New SAS User</title>
    <link>https://communities.sas.com/t5/New-SAS-User/Macro-variable-not-resolving-as-per-the-need-file-cnt/m-p/580589#M13578</link>
    <description>&lt;P&gt;&lt;SPAN&gt;Hi All,&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;I am trying to put the value of 'i' in a macro within a data step using call symput. When csv_name is resolving accurately with the value of i, then why not file_cnt ? Please let me know where did i go wrong or show me a way of how to rewrite this query more efficiently. Help appreciated.. &lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;Thanks alot.&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;%let num=100;&lt;BR /&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;DIV&gt;DATA new1;&lt;/DIV&gt;&lt;DIV&gt;do new=1 to 1000; output;end;&lt;/DIV&gt;&lt;DIV&gt;run;&lt;/DIV&gt;&lt;DIV&gt;proc sort data=new1;by new;run;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;data new2;&lt;/DIV&gt;&lt;DIV&gt;set new1;&lt;/DIV&gt;&lt;DIV&gt;by new;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;IF _n_=1 THEN do;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; i=1;&lt;/DIV&gt;&lt;DIV&gt;j=0;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;END;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;RETAIN i j;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;IF j=100 then do;&lt;/DIV&gt;&lt;DIV&gt;i=i+j;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;j=0;&lt;/DIV&gt;&lt;DIV&gt;END;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;********************************************************&lt;/DIV&gt;&lt;DIV&gt;In this block I am creating names for the csv dividing them into 100 records / csv&lt;/DIV&gt;&lt;DIV&gt;******************************************************;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;IF NEW &amp;gt;= i and NEW &amp;lt;= (i+&amp;amp;num-1) THEN DO;&lt;/DIV&gt;&lt;DIV&gt;csv_name=i;&lt;/DIV&gt;&lt;DIV&gt;call symput('file_cnt',put(i,3.));&lt;/DIV&gt;&lt;DIV&gt;&lt;PRE class=" language-sas"&gt;&lt;CODE class="  language-sas"&gt;&lt;SPAN class="token operator"&gt;**&lt;/SPAN&gt;&lt;SPAN class="token operator"&gt;**&lt;/SPAN&gt;&lt;SPAN class="token operator"&gt;**&lt;/SPAN&gt;&lt;SPAN class="token operator"&gt;**&lt;/SPAN&gt;&lt;SPAN class="token operator"&gt;**&lt;/SPAN&gt;&lt;SPAN class="token operator"&gt;**&lt;/SPAN&gt;&lt;SPAN class="token operator"&gt;**&lt;/SPAN&gt;&lt;SPAN class="token operator"&gt;**&lt;/SPAN&gt;&lt;SPAN class="token operator"&gt;**&lt;/SPAN&gt;&lt;SPAN class="token operator"&gt;**&lt;/SPAN&gt;&lt;SPAN class="token operator"&gt;**&lt;/SPAN&gt;&lt;SPAN class="token operator"&gt;**&lt;/SPAN&gt;&lt;SPAN class="token operator"&gt;**&lt;/SPAN&gt;&lt;SPAN class="token operator"&gt;**&lt;/SPAN&gt;&lt;SPAN class="token operator"&gt;**&lt;/SPAN&gt;&lt;SPAN class="token operator"&gt;**&lt;/SPAN&gt;&lt;SPAN class="token operator"&gt;**&lt;/SPAN&gt;&lt;SPAN class="token operator"&gt;**&lt;/SPAN&gt;&lt;SPAN class="token operator"&gt;**&lt;/SPAN&gt;&lt;SPAN class="token operator"&gt;**&lt;/SPAN&gt;&lt;SPAN class="token operator"&gt;**&lt;/SPAN&gt;&lt;SPAN class="token operator"&gt;**&lt;/SPAN&gt;&lt;SPAN class="token operator"&gt;**&lt;/SPAN&gt;&lt;SPAN class="token operator"&gt;**&lt;/SPAN&gt;&lt;SPAN class="token operator"&gt;**&lt;/SPAN&gt;&lt;SPAN class="token operator"&gt;**&lt;/SPAN&gt;&lt;SPAN class="token operator"&gt;**&lt;/SPAN&gt;
Below is the file_cnt which is not resolving as per the need
&lt;SPAN class="token comment"&gt;******************************************************;&lt;/SPAN&gt;&lt;/CODE&gt;&lt;/PRE&gt;&lt;/DIV&gt;&lt;DIV&gt;file = "abc_&amp;amp;file_cnt._dt.csv";&lt;/DIV&gt;&lt;DIV&gt;END;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;IF First.NEW THEN DO;&lt;/DIV&gt;&lt;DIV&gt;j=j+1;&lt;/DIV&gt;&lt;DIV&gt;csv=i;&lt;/DIV&gt;&lt;DIV&gt;ENd;&lt;/DIV&gt;&lt;DIV&gt;run;&lt;/DIV&gt;</description>
    <pubDate>Mon, 12 Aug 2019 16:08:19 GMT</pubDate>
    <dc:creator>prad001</dc:creator>
    <dc:date>2019-08-12T16:08:19Z</dc:date>
    <item>
      <title>Macro variable not resolving as per the need...!!! file_cnt</title>
      <link>https://communities.sas.com/t5/New-SAS-User/Macro-variable-not-resolving-as-per-the-need-file-cnt/m-p/580589#M13578</link>
      <description>&lt;P&gt;&lt;SPAN&gt;Hi All,&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;I am trying to put the value of 'i' in a macro within a data step using call symput. When csv_name is resolving accurately with the value of i, then why not file_cnt ? Please let me know where did i go wrong or show me a way of how to rewrite this query more efficiently. Help appreciated.. &lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;Thanks alot.&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;%let num=100;&lt;BR /&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;DIV&gt;DATA new1;&lt;/DIV&gt;&lt;DIV&gt;do new=1 to 1000; output;end;&lt;/DIV&gt;&lt;DIV&gt;run;&lt;/DIV&gt;&lt;DIV&gt;proc sort data=new1;by new;run;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;data new2;&lt;/DIV&gt;&lt;DIV&gt;set new1;&lt;/DIV&gt;&lt;DIV&gt;by new;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;IF _n_=1 THEN do;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; i=1;&lt;/DIV&gt;&lt;DIV&gt;j=0;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;END;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;RETAIN i j;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;IF j=100 then do;&lt;/DIV&gt;&lt;DIV&gt;i=i+j;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;j=0;&lt;/DIV&gt;&lt;DIV&gt;END;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;********************************************************&lt;/DIV&gt;&lt;DIV&gt;In this block I am creating names for the csv dividing them into 100 records / csv&lt;/DIV&gt;&lt;DIV&gt;******************************************************;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;IF NEW &amp;gt;= i and NEW &amp;lt;= (i+&amp;amp;num-1) THEN DO;&lt;/DIV&gt;&lt;DIV&gt;csv_name=i;&lt;/DIV&gt;&lt;DIV&gt;call symput('file_cnt',put(i,3.));&lt;/DIV&gt;&lt;DIV&gt;&lt;PRE class=" language-sas"&gt;&lt;CODE class="  language-sas"&gt;&lt;SPAN class="token operator"&gt;**&lt;/SPAN&gt;&lt;SPAN class="token operator"&gt;**&lt;/SPAN&gt;&lt;SPAN class="token operator"&gt;**&lt;/SPAN&gt;&lt;SPAN class="token operator"&gt;**&lt;/SPAN&gt;&lt;SPAN class="token operator"&gt;**&lt;/SPAN&gt;&lt;SPAN class="token operator"&gt;**&lt;/SPAN&gt;&lt;SPAN class="token operator"&gt;**&lt;/SPAN&gt;&lt;SPAN class="token operator"&gt;**&lt;/SPAN&gt;&lt;SPAN class="token operator"&gt;**&lt;/SPAN&gt;&lt;SPAN class="token operator"&gt;**&lt;/SPAN&gt;&lt;SPAN class="token operator"&gt;**&lt;/SPAN&gt;&lt;SPAN class="token operator"&gt;**&lt;/SPAN&gt;&lt;SPAN class="token operator"&gt;**&lt;/SPAN&gt;&lt;SPAN class="token operator"&gt;**&lt;/SPAN&gt;&lt;SPAN class="token operator"&gt;**&lt;/SPAN&gt;&lt;SPAN class="token operator"&gt;**&lt;/SPAN&gt;&lt;SPAN class="token operator"&gt;**&lt;/SPAN&gt;&lt;SPAN class="token operator"&gt;**&lt;/SPAN&gt;&lt;SPAN class="token operator"&gt;**&lt;/SPAN&gt;&lt;SPAN class="token operator"&gt;**&lt;/SPAN&gt;&lt;SPAN class="token operator"&gt;**&lt;/SPAN&gt;&lt;SPAN class="token operator"&gt;**&lt;/SPAN&gt;&lt;SPAN class="token operator"&gt;**&lt;/SPAN&gt;&lt;SPAN class="token operator"&gt;**&lt;/SPAN&gt;&lt;SPAN class="token operator"&gt;**&lt;/SPAN&gt;&lt;SPAN class="token operator"&gt;**&lt;/SPAN&gt;&lt;SPAN class="token operator"&gt;**&lt;/SPAN&gt;
Below is the file_cnt which is not resolving as per the need
&lt;SPAN class="token comment"&gt;******************************************************;&lt;/SPAN&gt;&lt;/CODE&gt;&lt;/PRE&gt;&lt;/DIV&gt;&lt;DIV&gt;file = "abc_&amp;amp;file_cnt._dt.csv";&lt;/DIV&gt;&lt;DIV&gt;END;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;IF First.NEW THEN DO;&lt;/DIV&gt;&lt;DIV&gt;j=j+1;&lt;/DIV&gt;&lt;DIV&gt;csv=i;&lt;/DIV&gt;&lt;DIV&gt;ENd;&lt;/DIV&gt;&lt;DIV&gt;run;&lt;/DIV&gt;</description>
      <pubDate>Mon, 12 Aug 2019 16:08:19 GMT</pubDate>
      <guid>https://communities.sas.com/t5/New-SAS-User/Macro-variable-not-resolving-as-per-the-need-file-cnt/m-p/580589#M13578</guid>
      <dc:creator>prad001</dc:creator>
      <dc:date>2019-08-12T16:08:19Z</dc:date>
    </item>
    <item>
      <title>Re: Macro variable not resolving as per the need...!!! file_cnt</title>
      <link>https://communities.sas.com/t5/New-SAS-User/Macro-variable-not-resolving-as-per-the-need-file-cnt/m-p/580591#M13579</link>
      <description>&lt;P&gt;I cannot make sense of your logic, but your error with respect to macro variables is clear.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;When the data step is compiled this statement is evaluated:&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;file = "abc_&amp;amp;file_cnt._dt.csv";&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;And turned into something like:&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;file = "abc_123_dt.csv";&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;Then later when the data step is running this line will execute&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;call symput('file_cnt',put(i,3.));&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;and set a value for FILE_CNT that you could use in the NEXT block of SAS code that you want to generate.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;If you want the value of FILE to be based on the value of I then tell SAS to build it using I and not some macro variable.&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;file = cats('abc_',put(i,Z3.),'_dt.csv');&lt;/CODE&gt;&lt;/PRE&gt;</description>
      <pubDate>Mon, 12 Aug 2019 16:15:47 GMT</pubDate>
      <guid>https://communities.sas.com/t5/New-SAS-User/Macro-variable-not-resolving-as-per-the-need-file-cnt/m-p/580591#M13579</guid>
      <dc:creator>Tom</dc:creator>
      <dc:date>2019-08-12T16:15:47Z</dc:date>
    </item>
    <item>
      <title>Re: Macro variable not resolving as per the need...!!! file_cnt</title>
      <link>https://communities.sas.com/t5/New-SAS-User/Macro-variable-not-resolving-as-per-the-need-file-cnt/m-p/580593#M13581</link>
      <description>&lt;P&gt;I can't make sense of the logic here. But methinks resolve is what you are after. is this what you are after by any chance?&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;file = resolve('abc_&amp;amp;file_cnt._dt.csv');&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;So, if yes&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;

%let num=100;

DATA new1;
do new=1 to 1000; output;end;
run;
proc sort data=new1;by new;run;
 
data new2;
set new1;
by new;
 
IF _n_=1 THEN do; 
  i=1;
j=0; 
END;
 
RETAIN i j;
 
IF j=100 then do;
i=i+j; 
j=0;
END;
 
********************************************************
In this block I am creating names for the csv dividing them into 100 records / csv
******************************************************;
 
 
IF NEW &amp;gt;= i and NEW &amp;lt;= (i+&amp;amp;num-1) THEN DO;
csv_name=i;
call symputx('file_cnt',put(i,3.));
******************************************************
Below is the file_cnt which is not resolving as per the need
******************************************************;
file = resolve('abc_&amp;amp;file_cnt._dt.csv');
END;
 
 
 
IF First.NEW THEN DO;
j=j+1;
csv=i;
ENd;
run;&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Mon, 12 Aug 2019 16:24:22 GMT</pubDate>
      <guid>https://communities.sas.com/t5/New-SAS-User/Macro-variable-not-resolving-as-per-the-need-file-cnt/m-p/580593#M13581</guid>
      <dc:creator>novinosrin</dc:creator>
      <dc:date>2019-08-12T16:24:22Z</dc:date>
    </item>
  </channel>
</rss>

