<?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: excluding variables in proc sql in SAS Programming</title>
    <link>https://communities.sas.com/t5/SAS-Programming/excluding-variables-in-proc-sql/m-p/479251#M286491</link>
    <description>This solution works too. Thank you so much!</description>
    <pubDate>Wed, 18 Jul 2018 20:14:45 GMT</pubDate>
    <dc:creator>brainupgraded</dc:creator>
    <dc:date>2018-07-18T20:14:45Z</dc:date>
    <item>
      <title>excluding variables in proc sql</title>
      <link>https://communities.sas.com/t5/SAS-Programming/excluding-variables-in-proc-sql/m-p/479229#M286487</link>
      <description>&lt;P&gt;Hello SAS users,&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;I am trying to create a global macro for the list of variables in the dataset I have.&lt;/P&gt;&lt;P&gt;There are over 400 variables in this dataset and I need to exclude the variables ending with "_TS" from the list.&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;I tried to do that by using "reverse" and "substr" functions in&amp;nbsp;the where cluase,&amp;nbsp;but it doesn't work.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;I would appreciate any help to figure this out.&lt;/P&gt;&lt;P&gt;Thanks.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Here is my code.&lt;/P&gt;&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;%macro rname(libname=,datanm=,range=_ALL_,pattern=%,separateby=%str( ));
	data tmp;set &amp;amp;libname..&amp;amp;datanm.; /* create a temporary dataset */
	run;
	%if "&amp;amp;range." ^=%str() %then %do;
	 	data tmp;set tmp;
			keep &amp;amp;range.; /* keep the variables within "range" (e.g., character only, numeric only, variables within a specified range, etc.) */
		run;
	%end;

	%global list_var; /* create a global macro */
	%global list_rename; /* create a global macro */

	%let list_var=%str(); /*reset the macro variable list_rename */
	%let list_rename=%str(); /*reset the macro variable list_rename */

	proc sql noprint;
		select name into : list_var separated by ' ' /* creating a global macro for the list of variables */
		from dictionary.columns
		where libname=upcase("work") and memname = upcase("tmp") /* selecting a dataset to work on */
			and name like "&amp;amp;pattern." escape '#' /* variable name patterns to select */
			and reverse(substr(reverse(name), 1, 3))^="_TS";

		select cats(name, '=n', name) into : list_rename separated by ' ' /* creating a global macro for the list of "sentences": the code creates a list of varname=nvarname separated by " " */
		from dictionary.columns
		where libname=upcase("work") and memname = upcase("tmp") /* selecting a dataset to work on */
			and name like "&amp;amp;pattern." escape '#' /* variable name patterns to select */
			and reverse(substr(reverse(name), 1, 3))^="_TS";
	quit;
%mend;&lt;/CODE&gt;&lt;/PRE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Wed, 18 Jul 2018 19:28:09 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/excluding-variables-in-proc-sql/m-p/479229#M286487</guid>
      <dc:creator>brainupgraded</dc:creator>
      <dc:date>2018-07-18T19:28:09Z</dc:date>
    </item>
    <item>
      <title>Re: excluding variables in proc sql</title>
      <link>https://communities.sas.com/t5/SAS-Programming/excluding-variables-in-proc-sql/m-p/479233#M286488</link>
      <description>&lt;P&gt;I can't say whether this is the only issue, but it's a key issue.&amp;nbsp; This comparison is incorrect:&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;and &lt;SPAN class="token function"&gt;reverse&lt;/SPAN&gt;&lt;SPAN class="token punctuation"&gt;(&lt;/SPAN&gt;&lt;SPAN class="token function"&gt;substr&lt;/SPAN&gt;&lt;SPAN class="token punctuation"&gt;(&lt;/SPAN&gt;&lt;SPAN class="token function"&gt;reverse&lt;/SPAN&gt;&lt;SPAN class="token punctuation"&gt;(&lt;/SPAN&gt;name&lt;SPAN class="token punctuation"&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 number"&gt;3&lt;/SPAN&gt;&lt;SPAN class="token punctuation"&gt;)&lt;/SPAN&gt;&lt;SPAN class="token punctuation"&gt;)&lt;/SPAN&gt;&lt;SPAN class="token operator"&gt;^=&lt;/SPAN&gt;&lt;SPAN class="token string"&gt;"_TS"&lt;/SPAN&gt;&lt;SPAN class="token punctuation"&gt;;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;The problem is that NAME is actually 32 characters long.&amp;nbsp; Most of the time, the last three characters are blank rather than "_TS".&amp;nbsp; So you will need to get rid of some blanks.&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;and &lt;SPAN class="token function"&gt;reverse&lt;/SPAN&gt;&lt;SPAN class="token punctuation"&gt;(&lt;/SPAN&gt;&lt;SPAN class="token function"&gt;substr&lt;/SPAN&gt;&lt;SPAN class="token punctuation"&gt;(&lt;FONT color="#ff0000"&gt;left(&lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN class="token function"&gt;reverse&lt;/SPAN&gt;&lt;SPAN class="token punctuation"&gt;(&lt;/SPAN&gt;name&lt;SPAN class="token punctuation"&gt;)&lt;FONT color="#ff0000"&gt;)&lt;/FONT&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 number"&gt;3&lt;/SPAN&gt;&lt;SPAN class="token punctuation"&gt;)&lt;/SPAN&gt;&lt;SPAN class="token punctuation"&gt;)&lt;/SPAN&gt;&lt;SPAN class="token operator"&gt;^=&lt;/SPAN&gt;&lt;SPAN class="token string"&gt;"_TS"&lt;/SPAN&gt;&lt;SPAN class="token punctuation"&gt;;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;SPAN class="token punctuation"&gt;If you think it would be easier to read, you could get rid of the final REVERSE:&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;SPAN class="token punctuation"&gt;and &lt;SPAN class="token function"&gt;substr&lt;/SPAN&gt;(left(&lt;SPAN class="token function"&gt;reverse&lt;/SPAN&gt;(name)), &lt;SPAN class="token number"&gt;1&lt;/SPAN&gt;, &lt;SPAN class="token number"&gt;3&lt;/SPAN&gt;)&lt;SPAN class="token operator"&gt;^=&lt;/SPAN&gt;&lt;SPAN class="token string"&gt;"ST_"&lt;/SPAN&gt;;&lt;BR /&gt;&lt;/SPAN&gt;&lt;/P&gt;</description>
      <pubDate>Wed, 18 Jul 2018 19:40:22 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/excluding-variables-in-proc-sql/m-p/479233#M286488</guid>
      <dc:creator>Astounding</dc:creator>
      <dc:date>2018-07-18T19:40:22Z</dc:date>
    </item>
    <item>
      <title>Re: excluding variables in proc sql</title>
      <link>https://communities.sas.com/t5/SAS-Programming/excluding-variables-in-proc-sql/m-p/479234#M286489</link>
      <description>&lt;P&gt;UNTESTED CODE&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;proc sql noprint;
      select distinct name into :list_var separated by ' ' from dictionary.columns 
      where upcase(libname)='WORK' and upcase(memname)='TMP' 
            and find(reverse(trim(name)),'ST_','i')^=1;
quit;&lt;/CODE&gt;&lt;/PRE&gt;</description>
      <pubDate>Wed, 18 Jul 2018 19:45:47 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/excluding-variables-in-proc-sql/m-p/479234#M286489</guid>
      <dc:creator>PaigeMiller</dc:creator>
      <dc:date>2018-07-18T19:45:47Z</dc:date>
    </item>
    <item>
      <title>Re: excluding variables in proc sql</title>
      <link>https://communities.sas.com/t5/SAS-Programming/excluding-variables-in-proc-sql/m-p/479249#M286490</link>
      <description>&lt;P&gt;This solution works, Thank you so much!&lt;/P&gt;</description>
      <pubDate>Wed, 18 Jul 2018 20:13:44 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/excluding-variables-in-proc-sql/m-p/479249#M286490</guid>
      <dc:creator>brainupgraded</dc:creator>
      <dc:date>2018-07-18T20:13:44Z</dc:date>
    </item>
    <item>
      <title>Re: excluding variables in proc sql</title>
      <link>https://communities.sas.com/t5/SAS-Programming/excluding-variables-in-proc-sql/m-p/479251#M286491</link>
      <description>This solution works too. Thank you so much!</description>
      <pubDate>Wed, 18 Jul 2018 20:14:45 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/excluding-variables-in-proc-sql/m-p/479251#M286491</guid>
      <dc:creator>brainupgraded</dc:creator>
      <dc:date>2018-07-18T20:14:45Z</dc:date>
    </item>
  </channel>
</rss>

