<?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: Getting a list of variables in a table in a single statement in SAS Programming</title>
    <link>https://communities.sas.com/t5/SAS-Programming/Macro-function-to-return-a-list-of-variables-in-a-table-in-a/m-p/633538#M187934</link>
    <description>&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;proc contents data=have; run;&lt;/CODE&gt;&lt;/PRE&gt;</description>
    <pubDate>Fri, 20 Mar 2020 11:28:04 GMT</pubDate>
    <dc:creator>PaigeMiller</dc:creator>
    <dc:date>2020-03-20T11:28:04Z</dc:date>
    <item>
      <title>Macro function to return a list of variables in a table in a single statement : %ut_varlist</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Macro-function-to-return-a-list-of-variables-in-a-table-in-a/m-p/633536#M187933</link>
      <description>&lt;P&gt;&lt;STRONG&gt;Macro function to return a list of variables in a table in a single statement&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;This post describes and attaches %ut_varlist, a useful utility macro that I use in many SAS programs.&amp;nbsp;&amp;nbsp;An often used way to get a list of columns is to query the SAS data dictionary view SASHELP.VCOLUMN or to use Proc contents to output a SAS table.&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;However, this posting presents a macro function that does not generate executable code and can therefore be used in expressions and even allows nested calls.&amp;nbsp;&amp;nbsp; For example, to return the list of character columns that are both in SASHELP.CLASS and SASHELP.CLASSFIT, the following calls can be made:&lt;/P&gt;&lt;P&gt;%let common_vars =%ut_varlist(table=sashelp.class,select=%ut_varlist(table=sashelp.classfit));&lt;/P&gt;&lt;P&gt;The ability to use %ut_varlist enables SAS programmers to write code that would otherwise be more complex and need more time to debug and maintain.&amp;nbsp;&amp;nbsp;&lt;/P&gt;&lt;P&gt;I present a list of usage examples that show the versatility of %ut_varlist.&amp;nbsp;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Addtional features:&lt;/P&gt;&lt;UL&gt;&lt;LI&gt;It can susbset the selected columns that contain a specified substring as a prefix, suffix, or anywhere in the name.&lt;/LI&gt;&lt;LI&gt;on the column type (NUM, CHAR; DATE, DATETIME, etc)&lt;/LI&gt;&lt;LI&gt;It can add prefixes to each column name&amp;nbsp;&lt;/LI&gt;&lt;LI&gt;The default delimiter is blank, but other delimiter can be specified.&amp;nbsp; Commas are useful when generating SQL code!&lt;/LI&gt;&lt;LI&gt;It can double or single quote each column name column in the returned list&lt;/LI&gt;&lt;LI&gt;It can limit the returned list to be one of the items in a SELECT list.&amp;nbsp; This is useful in nested calls that find common columns or in checking that a specific list of columns are all contained in the table,&amp;nbsp; &amp;nbsp;&lt;/LI&gt;&lt;LI&gt;It can exclude columns in an EXCLUDE list.&amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;The attached files include the source code needed as well as a word document.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;As this is my first blog after using SAS for decades, I welcome feedback!&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;Example 1 : select&amp;nbsp; all variables in the table;&lt;/STRONG&gt;&lt;/P&gt;&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;%let classfit_vars=%ut_varlist(table=sashelp.classfit);
%put &amp;amp;=classfit_vars;&lt;/CODE&gt;&lt;/PRE&gt;&lt;P&gt;&lt;STRONG&gt;Example 2 : character variables in the table;&lt;/STRONG&gt;&lt;/P&gt;&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;%let char_vars=%ut_varlist(table=sashelp.classfit, type=CHAR);
%put &amp;amp;char_vars.;&lt;/CODE&gt;&lt;/PRE&gt;&lt;P&gt;&lt;STRONG&gt;Example 3 : comma-separated and quoted_vars;&lt;/STRONG&gt;&lt;/P&gt;&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;%let comma_quoted_vars=%ut_varlist(table=sashelp.class, newdlm=COMMA, quote=YES);
%put &amp;amp;=comma_quoted_vars;&lt;/CODE&gt;&lt;/PRE&gt;&lt;P&gt;&lt;STRONG&gt;Example 4 : comma-separated single-quoted_vars;&lt;/STRONG&gt;&lt;/P&gt;&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;%let NUM_comma_singlequotes=%ut_varlist(table=sashelp.cars, type=NUM, newdlm=COMMA, quote=SINGLE);
%put &amp;amp;=NUM_comma_singlequotes.;&lt;/CODE&gt;&lt;/PRE&gt;&lt;P&gt;&lt;STRONG&gt;Example 5 - Keep all cols in the main input table = Automatically drop temp cols.;&lt;/STRONG&gt;&lt;/P&gt;&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data test2;
set sashelp.cars;
keep %ut_varlist(table=sashelp.cars);
temp_var = 1;&amp;nbsp; * does&amp;nbsp; not need to be dropped ! ;
run;&lt;/CODE&gt;&lt;/PRE&gt;&lt;P&gt;&lt;STRONG&gt;Example 6a - Use to check existence of a column in a table ;&lt;/STRONG&gt;&lt;/P&gt;&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;&amp;nbsp;%let my_table = sashelp.classfit;
%let my_col=lower;
&amp;nbsp;%if %ut_varlist(table=&amp;amp;my_table., select=&amp;amp;mycol.) ne %str() %then %do;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; %put Column "&amp;amp;mycol." exists in table &amp;amp;my_table.;
&amp;nbsp;%end;&lt;/CODE&gt;&lt;/PRE&gt;&lt;P&gt;&amp;nbsp;&lt;STRONG&gt;* Example 6b - Use to check existance of 2 columns in a table&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&amp;nbsp;We don't care of the order they appear in the table ;&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;%let my_table = sashelp.classfit;
&amp;nbsp;%if %length(%ut_varlist(table=&amp;amp;my_table., select=lower upper)) = %length(lower upper) %then %do;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; %put Columns "lower" and "upper" exist in table &amp;amp;my_table.;
%end;&lt;/CODE&gt;&lt;/PRE&gt;&lt;P&gt;&lt;STRONG&gt;* Example 6c -Use to identify columns that are not in another table&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&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; - first example of nested call;&lt;/STRONG&gt;&lt;/P&gt;&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;%let missing_cols = %ut_varlist(table=sashelp.classfit,
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; exclude = %ut_varlist(table=sashelp.class));
%if %length(&amp;amp;missing_cols.) ne 0 %then %do;
&amp;nbsp;&amp;nbsp;&amp;nbsp; %put NOTE: sashelp.class does not have the columns in sashelp.classfit: 
         &amp;amp;missing_cols. ;
%end;&lt;/CODE&gt;&lt;/PRE&gt;&lt;P&gt;&lt;STRONG&gt;Example 7 - Use to return cols common to two tables;&lt;/STRONG&gt;&lt;/P&gt;&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;%let common_vars = %ut_varlist(table=sashelp.class,select=%ut_varlist(table=sashelp.classfit));
%put common_vars=&amp;amp;common_vars;&lt;/CODE&gt;&lt;/PRE&gt;&lt;P&gt;&lt;STRONG&gt;Example 8 - Generic Join on common columns on tables sashelp.class and sashelp.classfit.&amp;nbsp; &lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;Note that columns in class and classfit should not be re-selected from classfit.&lt;/P&gt;&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;options mprint;
proc sql noprint;
create table class_join
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; as select %ut_varlist(table=sashelp.class, add_prefix=class., newdlm=COMMA),
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; %ut_varlist(table=sashelp.classfit, add_prefix=fit., newdlm=COMMA,
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; exclude = %ut_varlist(table=sashelp.class, add_prefix=fit.))
&amp;nbsp;&amp;nbsp;&amp;nbsp; from sashelp.class class
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; left join
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; sashelp.classfit fit
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; on class.name=fit.name;
quit;&lt;/CODE&gt;&lt;/PRE&gt;&lt;P&gt;&lt;STRONG&gt;Example 9 - format all numeric columns that contain _AMT in the name with format COMMA7.2 ;&lt;/STRONG&gt;&lt;/P&gt;&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data pocket_money;
set sashelp.class;
month_pocket_amt=age*5.65;
annual_amt = 12 * month_pocket_amt;
run;

* reformat _AMT fields to use comma format;
data comma_fmt;
set pocket_money;
format %ut_varlist(table=pocket_money, contain=_AMT, type=NUM, contain_pos=END)&amp;nbsp; COMMA7.2;
run;&lt;/CODE&gt;&lt;/PRE&gt;&lt;P&gt;&lt;STRONG&gt;Example 10 - force consistent date and datetime formats to the relevant columns in a table ;&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;* first create a dummy table with differing formats ;&lt;BR /&gt;data multiple_date_fmts;
today = today();
format today date7.;
dt = datetime();
my_amt = 12.34;
my_int = round(my_amt);
b8601dt = dt; b8601DN = dt; dtdate = dt;
b8601da = today; ddmmyyp=today; ddmmyyn=today;
time = timepart(today());
format time time8.;
format dt datetime.&amp;nbsp; b8601dt b8601dt. b8601DN b8601DN. dtdate dtdate9. ;
format b8601da b8601da. ddmmyyp ddmmyyp10. ddmmyyn ddmmyyn8.;
notamt_not_relevant = 1;
put _all_;
run;

%let datecols=%ut_varlist(table=multiple_date_fmts, type=DATE);
%let datetimecols=%ut_varlist(table=multiple_date_fmts, type=DATETIME);

proc datasets library=work nolist;
modify multiple_date_fmts;
format &amp;amp;datecols. yymmdd10.;
format &amp;amp;datetimecols. datetime19.2;
quit;&lt;/CODE&gt;&lt;/PRE&gt;&lt;P&gt;&lt;STRONG&gt;Example 11&amp;nbsp; - Create a macro to generate a rename option to add a prefix for all columns&amp;nbsp;that do not already have that prefix ;&lt;/STRONG&gt;&lt;/P&gt;&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;%macro rename_cols_option(inTab=, new_prefix=);
%local old_names new_names vi;
%let old_names = %ut_varlist(table=&amp;amp;inTab.
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;, exclude=%ut_varlist(table=&amp;amp;inTab,contain=&amp;amp;new_prefix.
                   , contain_pos=START));
%let new_names = %ut_varlist(table=&amp;amp;inTab, add_prefix=&amp;amp;new_prefix.,
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; exclude=%ut_varlist(table=&amp;amp;inTab,contain=&amp;amp;new_prefix., 
                  contain_pos=START));
RENAME = (
   %do vi=1 %to %sysfunc(countw(&amp;amp;old_names.));
&amp;nbsp;&amp;nbsp;&amp;nbsp;    %scan(&amp;amp;old_names.,&amp;amp;vi.) =&amp;nbsp; %scan(&amp;amp;new_names.,&amp;amp;vi.)
  %end;
)
%mend rename_cols_option;
&amp;nbsp;* example call of rename_cols_option;
&amp;nbsp;data helpcars;
&amp;nbsp;set sashelp.cars(%rename_cols_option(inTab=sashelp.cars, new_prefix=sash_));
&amp;nbsp;run;

&lt;/CODE&gt;&lt;/PRE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Sat, 21 Mar 2020 21:30:53 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Macro-function-to-return-a-list-of-variables-in-a-table-in-a/m-p/633536#M187933</guid>
      <dc:creator>DavePrinsloo</dc:creator>
      <dc:date>2020-03-21T21:30:53Z</dc:date>
    </item>
    <item>
      <title>Re: Getting a list of variables in a table in a single statement</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Macro-function-to-return-a-list-of-variables-in-a-table-in-a/m-p/633538#M187934</link>
      <description>&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;proc contents data=have; run;&lt;/CODE&gt;&lt;/PRE&gt;</description>
      <pubDate>Fri, 20 Mar 2020 11:28:04 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Macro-function-to-return-a-list-of-variables-in-a-table-in-a/m-p/633538#M187934</guid>
      <dc:creator>PaigeMiller</dc:creator>
      <dc:date>2020-03-20T11:28:04Z</dc:date>
    </item>
    <item>
      <title>Re: Getting a list of variables in a table in a single statement</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Macro-function-to-return-a-list-of-variables-in-a-table-in-a/m-p/633544#M187935</link>
      <description>Thats not the point! I cannot use Proc contents inside a macro statement!</description>
      <pubDate>Fri, 20 Mar 2020 11:38:31 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Macro-function-to-return-a-list-of-variables-in-a-table-in-a/m-p/633544#M187935</guid>
      <dc:creator>DavePrinsloo</dc:creator>
      <dc:date>2020-03-20T11:38:31Z</dc:date>
    </item>
    <item>
      <title>Re: Macro function to return a list of variables in a table in a single statement : %ut_varlist</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Macro-function-to-return-a-list-of-variables-in-a-table-in-a/m-p/633556#M187940</link>
      <description>Can you edit your post and move the examples into SAS code block so that formatting is preserved?</description>
      <pubDate>Fri, 20 Mar 2020 12:20:42 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Macro-function-to-return-a-list-of-variables-in-a-table-in-a/m-p/633556#M187940</guid>
      <dc:creator>Tom</dc:creator>
      <dc:date>2020-03-20T12:20:42Z</dc:date>
    </item>
    <item>
      <title>Re: Macro function to return a list of variables in a table in a single statement : %ut_varlist</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Macro-function-to-return-a-list-of-variables-in-a-table-in-a/m-p/633560#M187944</link>
      <description>&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;DOSUBL Function&lt;/P&gt;
&lt;P&gt;Imports macro variables from the calling environment, and exports macro variables back to the calling environment.&lt;/P&gt;</description>
      <pubDate>Fri, 20 Mar 2020 12:26:17 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Macro-function-to-return-a-list-of-variables-in-a-table-in-a/m-p/633560#M187944</guid>
      <dc:creator>data_null__</dc:creator>
      <dc:date>2020-03-20T12:26:17Z</dc:date>
    </item>
    <item>
      <title>Re: Macro function to return a list of variables in a table in a single statement : %ut_varlist</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Macro-function-to-return-a-list-of-variables-in-a-table-in-a/m-p/633564#M187947</link>
      <description>&lt;P&gt;I'm a big fan of function-style macros like this.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;I've been playing with DOSUBL, one of the cool things it allows is to run full steps (PROC steps, DATA steps, etc) in a function-style macro, e.g.:&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;%macro ExpandVarList(data) ;
  %local rc varnames ;
  %let rc = %sysfunc(dosubl(%nrstr(
    proc contents data=&amp;amp;data out=__ExpandVarList(keep=name) noprint ;
    run ;
    proc sql noprint ;
      select name into :varnames separated by ' '
      from __ExpandVarList ;   
      drop table __ExpandVarList ;
    quit ;
  )));

&amp;amp;varnames /*return*/
%mend ;


%put %expandvarlist(sashelp.class) ;
%put %expandvarlist(sashelp.class(keep=_numeric_)) ;&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;I've got a good handful of utility macros that use %SYSFUNC with the SCL functions to open data etc.&amp;nbsp; But I'm planning to use the DOSUBL approach in the future.&amp;nbsp; There is a performance price to DOSUBL, but I think it's worth it for code simplification.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;John King has a great paper on using DOSUBL in function-style macro, which also shows a %Varlist macro:&lt;/P&gt;
&lt;P&gt;&lt;A href="http://www.mwsug.org/proceedings/2017/BB/MWSUG-2017-BB142.pdf" target="_blank"&gt;http://www.mwsug.org/proceedings/2017/BB/MWSUG-2017-BB142.pdf&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;And of course the foundational DOSUBL paper is Rick Langston's:&lt;/P&gt;
&lt;P&gt;&lt;A href="https://support.sas.com/resources/papers/proceedings13/032-2013.pdf" target="_blank"&gt;https://support.sas.com/resources/papers/proceedings13/032-2013.pdf&lt;/A&gt;&lt;/P&gt;</description>
      <pubDate>Fri, 20 Mar 2020 12:39:59 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Macro-function-to-return-a-list-of-variables-in-a-table-in-a/m-p/633564#M187947</guid>
      <dc:creator>Quentin</dc:creator>
      <dc:date>2020-03-20T12:39:59Z</dc:date>
    </item>
    <item>
      <title>Re: Macro function to return a list of variables in a table in a single statement : %ut_varlist</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Macro-function-to-return-a-list-of-variables-in-a-table-in-a/m-p/633579#M187951</link>
      <description>I agree DOSUBL is a great feature! This code has accompanied me long before it was available. I have not tried nested calls as supported by %ut_varlist</description>
      <pubDate>Fri, 20 Mar 2020 13:32:10 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Macro-function-to-return-a-list-of-variables-in-a-table-in-a/m-p/633579#M187951</guid>
      <dc:creator>DavePrinsloo</dc:creator>
      <dc:date>2020-03-20T13:32:10Z</dc:date>
    </item>
    <item>
      <title>Re: Macro function to return a list of variables in a table in a single statement : %ut_varlist</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Macro-function-to-return-a-list-of-variables-in-a-table-in-a/m-p/633580#M187952</link>
      <description>done. Thanks for the heads-up</description>
      <pubDate>Fri, 20 Mar 2020 13:34:36 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Macro-function-to-return-a-list-of-variables-in-a-table-in-a/m-p/633580#M187952</guid>
      <dc:creator>DavePrinsloo</dc:creator>
      <dc:date>2020-03-20T13:34:36Z</dc:date>
    </item>
    <item>
      <title>Re: Macro function to return a list of variables in a table in a single statement : %ut_varlist</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Macro-function-to-return-a-list-of-variables-in-a-table-in-a/m-p/633614#M187958</link>
      <description>DOSUBL seems to manage nested calls well. Meaning DOSUBL code can call DOSUBL, and you end up with a side-session that has a side-session.  &lt;BR /&gt;And agree, even thought I've become a fan of DOSUBL, my %Varlist macro stilll uses the SCL approach as well, and no point to changing it and revalidating etc.</description>
      <pubDate>Fri, 20 Mar 2020 14:28:48 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Macro-function-to-return-a-list-of-variables-in-a-table-in-a/m-p/633614#M187958</guid>
      <dc:creator>Quentin</dc:creator>
      <dc:date>2020-03-20T14:28:48Z</dc:date>
    </item>
    <item>
      <title>Re: Macro function to return a list of variables in a table in a single statement : %ut_varlist</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Macro-function-to-return-a-list-of-variables-in-a-table-in-a/m-p/633840#M188060</link>
      <description>The called macro ut_fmt2type has been replaced by code suggested by "Tom"</description>
      <pubDate>Sat, 21 Mar 2020 19:09:37 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Macro-function-to-return-a-list-of-variables-in-a-table-in-a/m-p/633840#M188060</guid>
      <dc:creator>DavePrinsloo</dc:creator>
      <dc:date>2020-03-21T19:09:37Z</dc:date>
    </item>
  </channel>
</rss>

