<?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: Test whether a macro located in SASAUTOS exists in SAS Programming</title>
    <link>https://communities.sas.com/t5/SAS-Programming/Test-whether-a-macro-located-in-SASAUTOS-exists/m-p/129303#M26383</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;trying to link macro-namings to sas code&amp;nbsp; is a very limited approach&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Suppose you could gather all sas logging of your involved sas programs. In that case you could analyze the logs of them to get the image what macro-s are touched with that subset.&amp;nbsp; &lt;/P&gt;&lt;P&gt;The &lt;A name="n188e0nhl068hzn1unfft60d9aj2"&gt;&lt;/A&gt;MAUTOCOMPLOC System Option is the one giving&amp;nbsp; the location and you can choose to display the full path.&amp;nbsp; &lt;/P&gt;&lt;P&gt;This only is applicable to mautocall type macro-s.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;These autocall macro-s are the subset of macros that are not been pre-compiled.&lt;/P&gt;&lt;P&gt;They must have a fitted name in OS level, the one must be found also using concatenation with filenames.&lt;/P&gt;&lt;P&gt;An Unix issue: use only lowercase letters in the OS-filenames, no capitals. The SAS languages is not case sensitive but Unix is, a translations is imbedded.&amp;nbsp;&amp;nbsp; &lt;/P&gt;&lt;P&gt;a Windows issue is that the OS is case-insensitive but allowed are naming containing all low and upper cases a you like.&lt;/P&gt;&lt;P&gt;The concatenation is a good technical trick to solve Life-cycle references questions. The known path on a OS is similar. The sas-config eg the SAShelp SASmacros is full with this approach. In that cases minimizing additional technical tricks for accessing objects and rely on naming conventions for isolation.&amp;nbsp;&amp;nbsp; &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Autocall macros are not the only way to define those.&lt;/P&gt;&lt;P&gt;-&amp;nbsp; A %include or other type of sas-code can define and use also macro-s&lt;/P&gt;&lt;P&gt;- Running some compiled sas-code can result in including additional sas-code containing macro-s. &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;There are a lot of reasons making an source-code analyzes on use macro-s impossible even you only look at the subset of the autocall ones.&lt;/P&gt;&lt;P&gt;- nested macro-s are possible only called when a certain condition is met. Error recovery is a common one. That macro is essential a part of the logical design seldom used, but when needed may be essential.&lt;/P&gt;&lt;P&gt;- redefining a macro as a standard in-line stream is often done. DI (and others) generated code is having a lot of that.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;You are not the fist one or the last with this kind of questions. SAS&amp;nbsp; has tried to do this with scaproc. Conversion old code to more modular approach for parallel processing.&lt;/P&gt;&lt;P&gt;&lt;A href="http://support.sas.com/documentation/cdl/en/proc/66663/HTML/default/viewer.htm#p1jvpkfx4equbkn1llhk2or03r0i.htm" title="http://support.sas.com/documentation/cdl/en/proc/66663/HTML/default/viewer.htm#p1jvpkfx4equbkn1llhk2or03r0i.htm"&gt;Base SAS(R) 9.4 Procedures Guide, Second Edition&lt;/A&gt; (scaproc), see alo the limitations &lt;A href="http://support.sas.com/resources/papers/proceedings12/237-2012.pdf" title="http://support.sas.com/resources/papers/proceedings12/237-2012.pdf"&gt;http://support.sas.com/resources/papers/proceedings12/237-2012.pdf&lt;/A&gt;. Usage of this is hidden in the menus of Eguide.&amp;nbsp;&amp;nbsp; &lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Sat, 19 Jul 2014 06:14:10 GMT</pubDate>
    <dc:creator>jakarman</dc:creator>
    <dc:date>2014-07-19T06:14:10Z</dc:date>
    <item>
      <title>Test whether a macro located in SASAUTOS exists</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Test-whether-a-macro-located-in-SASAUTOS-exists/m-p/129293#M26373</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;I have a variety of macros stored in a directory structure on my hard-drive.&amp;nbsp; In my autoexec.sas I have the line:&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'courier new', courier;"&gt;SASAUTOS = ( "F:\_macros\util" "F:\_macros\rprt" "F:\_macros\plot" SASAUTOS);&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I would like to test for the presence of certain macros located within any of the folders found in my SASAUTOS statement.&amp;nbsp; I have used &lt;SPAN style="font-family: 'courier new', courier;"&gt;%sysmacexist&lt;/SPAN&gt;, but it searches the work macro catalog and I want to search for a macro that hasn't yet been compiled.&amp;nbsp; My justification for doing this is to break apart a complex macro into many smaller ones.&amp;nbsp; However, in doing so, I have to make sure the users have these smaller macro dependencies installed on their systems.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 04 Sep 2013 18:38:27 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Test-whether-a-macro-located-in-SASAUTOS-exists/m-p/129293#M26373</guid>
      <dc:creator>Zelazny7</dc:creator>
      <dc:date>2013-09-04T18:38:27Z</dc:date>
    </item>
    <item>
      <title>Re: Test whether a macro located in SASAUTOS exists</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Test-whether-a-macro-located-in-SASAUTOS-exists/m-p/129294#M26374</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;The function FILEEXIST may be helpful. Find some way step through your folder names, a DO loop should work, and concatenate the macro name .&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;re = fileexist (cats("F:\_macros\util","\",macroname,".sas");&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;in a data step.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 04 Sep 2013 19:39:52 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Test-whether-a-macro-located-in-SASAUTOS-exists/m-p/129294#M26374</guid>
      <dc:creator>ballardw</dc:creator>
      <dc:date>2013-09-04T19:39:52Z</dc:date>
    </item>
    <item>
      <title>Re: Test whether a macro located in SASAUTOS exists</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Test-whether-a-macro-located-in-SASAUTOS-exists/m-p/129295#M26375</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;You can use the optional last parameter to the FILENAME function to help.&lt;/P&gt;&lt;P&gt;First you need to convert your SASAUTOS option setting into a valid list of pathnames to use for a FILENAME statement or function call.&lt;/P&gt;&lt;P&gt;If your setting for SASAUTOS is more complex or the path returned by the PATHNAME('sasautos') call is more complex you might have to adjust this code.&lt;/P&gt;&lt;P&gt;This will test if the file "trim.sas" is in the SASAUTOS search path.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;%let macname=trim;&lt;/P&gt;&lt;P&gt;data _null_;&lt;/P&gt;&lt;P&gt;&amp;nbsp; length fileref1 fileref2 $8 ;&lt;/P&gt;&lt;P&gt;&amp;nbsp; length pathlist $32000 ;&lt;/P&gt;&lt;P&gt;&amp;nbsp; pathlist=getoption('sasautos');&lt;/P&gt;&lt;P&gt;&amp;nbsp; pathlist=tranwrd(pathlist,'sasautos',pathname('sasautos'));&lt;/P&gt;&lt;P&gt;&amp;nbsp; fileref1='_autos_';&lt;/P&gt;&lt;P&gt;&amp;nbsp; rc1 = filename(fileref1,pathlist);&lt;/P&gt;&lt;P&gt;&amp;nbsp; rc2 = filename(fileref2,"%lowcase(&amp;amp;macname).sas",,,fileref1);&lt;/P&gt;&lt;P&gt;&amp;nbsp; fid = fopen(fileref2,'I');&lt;/P&gt;&lt;P&gt;&amp;nbsp; put rc1= rc2=&amp;nbsp; fid= ;&lt;/P&gt;&lt;P&gt;&amp;nbsp; if fid then put "Found &amp;amp;macname";&lt;/P&gt;&lt;P&gt;&amp;nbsp; else put "NOT found &amp;amp;macname";&lt;/P&gt;&lt;P&gt;&amp;nbsp; if fid then rc=fclose(fid);&lt;/P&gt;&lt;P&gt;&amp;nbsp; if not rc2 then rc2=filename(fileref2);&lt;/P&gt;&lt;P&gt;&amp;nbsp; if not rc1 then rc1=filename(fileref1);&lt;/P&gt;&lt;P&gt;run;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 04 Sep 2013 20:12:35 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Test-whether-a-macro-located-in-SASAUTOS-exists/m-p/129295#M26375</guid>
      <dc:creator>Tom</dc:creator>
      <dc:date>2013-09-04T20:12:35Z</dc:date>
    </item>
    <item>
      <title>Re: Test whether a macro located in SASAUTOS exists</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Test-whether-a-macro-located-in-SASAUTOS-exists/m-p/129296#M26376</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi Tom&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I could only get this to work by removing the SASAUTOS fileref from PATHLIST&lt;/P&gt;&lt;P&gt;Before I do that, the RC1 value returned = 20017&lt;/P&gt;&lt;P&gt;This translates by sysrc.sas like&lt;/P&gt;&lt;P&gt;&amp;nbsp; %let _SEINVPN =&amp;nbsp;&amp;nbsp; 20017; /* physical name is invalid&amp;nbsp;&amp;nbsp;&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;implying an invalid path is tolerated by the SAS Autocall routines, but not by the FILENAME() function&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Automating the "cleanup" looks tedious - unless you know another useful idea.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;peterC&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Sat, 07 Sep 2013 11:55:42 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Test-whether-a-macro-located-in-SASAUTOS-exists/m-p/129296#M26376</guid>
      <dc:creator>Peter_C</dc:creator>
      <dc:date>2013-09-07T11:55:42Z</dc:date>
    </item>
    <item>
      <title>Re: Test whether a macro located in SASAUTOS exists</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Test-whether-a-macro-located-in-SASAUTOS-exists/m-p/129297#M26377</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;You just need to work a little harder.&lt;/P&gt;&lt;P&gt;Here is a program I have been using to find location of compiled macros.&lt;/P&gt;&lt;P&gt;I commented out the part that read the list of compiled macros from dictionary metadata and replaced it with inline card images instead.&amp;nbsp; You could modify it to reference a source dataset or even just pass the macro name as the value of a macro variable if you want.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'courier new', courier;"&gt;data maclist ;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'courier new', courier;"&gt;&amp;nbsp; attrib MACRO length=$32 label='Macro name';&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'courier new', courier;"&gt;&amp;nbsp; attrib FOUND length=3&amp;nbsp;&amp;nbsp; label='Found? (0/1)';&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'courier new', courier;"&gt;&amp;nbsp; attrib FILE&amp;nbsp; length=$36 label='Filename';&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'courier new', courier;"&gt;&amp;nbsp; attrib DNAME length=$200 label='Directory name';&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'courier new', courier;"&gt;&amp;nbsp; keep macro found file dname;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'courier new', courier;"&gt;*----------------------------------------------------------------------;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'courier new', courier;"&gt;* Get SASAUTOS option into D(1) temporary string variable and copy into;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'courier new', courier;"&gt;* D(2) expanding any filerefs such as SASAUTOS ;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'courier new', courier;"&gt;*----------------------------------------------------------------------;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'courier new', courier;"&gt;&amp;nbsp; array d(3) $32767 _temporary_;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'courier new', courier;"&gt;&amp;nbsp; if _n_=1 then do;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'courier new', courier;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; d(1)=getoption('sasautos') ;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'courier new', courier;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; do i=1 by 1 until(d(3)= ' ');&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'courier new', courier;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; d(3)=scan(d(1),i,'( )','q');&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'courier new', courier;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if length(d(3))&amp;lt;=8 then if 0=fileref(d(3)) then&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'courier new', courier;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; d(3)=pathname(d(3))&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'courier new', courier;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'courier new', courier;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; d(2)=catx(' ',d(2),d(3));&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'courier new', courier;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; end;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'courier new', courier;"&gt;&amp;nbsp; end;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'courier new', courier;"&gt;&lt;STRONG&gt;/*&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'courier new', courier;"&gt;&lt;STRONG&gt;&amp;nbsp; set sashelp.vcatalg;&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'courier new', courier;"&gt;&lt;STRONG&gt;&amp;nbsp; where libname='WORK' and memname='SASMACR'&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'courier new', courier;"&gt;&lt;STRONG&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; and memtype='CATALOG' and objtype='MACRO';&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'courier new', courier;"&gt;&lt;STRONG&gt;&amp;nbsp; macro=objname;&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'courier new', courier;"&gt;&lt;STRONG&gt;*/&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'courier new', courier;"&gt;&lt;STRONG&gt;&amp;nbsp; input macro ;&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'courier new', courier;"&gt;&amp;nbsp; file=lowcase(trim(macro))||'.sas';&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'courier new', courier;"&gt;*----------------------------------------------------------------------;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'courier new', courier;"&gt;* Scan through the paths in SASAUTOS until file found or end of list ;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'courier new', courier;"&gt;*----------------------------------------------------------------------;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'courier new', courier;"&gt;&amp;nbsp; found=0;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'courier new', courier;"&gt;&amp;nbsp; done=0;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'courier new', courier;"&gt;&amp;nbsp; do i=1 by 1 until (found or done);&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'courier new', courier;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; dname=dequote(scan(d(2),i,'( )','q'));&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'courier new', courier;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if dname=' ' then done=1;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'courier new', courier;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; else if fileexist(catx('/',dname,file)) then found=1;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'courier new', courier;"&gt;&amp;nbsp; end;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'courier new', courier;"&gt;&amp;nbsp; if ^found then dname=' ';&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'courier new', courier;"&gt;&lt;STRONG&gt;cards;&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'courier new', courier;"&gt;&lt;STRONG&gt;init&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'courier new', courier;"&gt;&lt;STRONG&gt;rtrim&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'courier new', courier;"&gt;&lt;STRONG&gt;trim&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'courier new', courier;"&gt;run;&lt;/SPAN&gt;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Sat, 07 Sep 2013 16:02:03 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Test-whether-a-macro-located-in-SASAUTOS-exists/m-p/129297#M26377</guid>
      <dc:creator>Tom</dc:creator>
      <dc:date>2013-09-07T16:02:03Z</dc:date>
    </item>
    <item>
      <title>Re: Test whether a macro located in SASAUTOS exists</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Test-whether-a-macro-located-in-SASAUTOS-exists/m-p/129298#M26378</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;many thanks Tom&lt;/P&gt;&lt;P&gt;regards&lt;/P&gt;&lt;P&gt;peter&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Sun, 08 Sep 2013 12:40:55 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Test-whether-a-macro-located-in-SASAUTOS-exists/m-p/129298#M26378</guid>
      <dc:creator>Peter_C</dc:creator>
      <dc:date>2013-09-08T12:40:55Z</dc:date>
    </item>
    <item>
      <title>Re: Test whether a macro located in SASAUTOS exists</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Test-whether-a-macro-located-in-SASAUTOS-exists/m-p/129299#M26379</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;A complete different approach could be to use what SAS already has.&lt;/P&gt;&lt;P&gt;Suppose:&lt;/P&gt;&lt;P&gt;- your macro's are having a description/help option just compling and doing nothing &lt;/P&gt;&lt;P&gt;- SAS version is like 9.3 having mautlocdisplay (9.2) mautolocindes (9.3) options &lt;A class="active_link" href="http://support.sas.com/documentation/cdl/en/mcrolref/62978/HTML/default/viewer.htm#p04o0tz0t7g88in1mqlh27hj7wgn.htm" title="http://support.sas.com/documentation/cdl/en/mcrolref/62978/HTML/default/viewer.htm#p04o0tz0t7g88in1mqlh27hj7wgn.htm"&gt;SAS(R) 9.3 Macro Language: Reference&lt;/A&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Solution:&lt;/P&gt;&lt;P&gt;a/ set options accordingly&amp;nbsp; mautlocdisplay (mautolocindes)&lt;/P&gt;&lt;P&gt;b/ do a call of your macros with the description option&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Mon, 09 Sep 2013 06:24:50 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Test-whether-a-macro-located-in-SASAUTOS-exists/m-p/129299#M26379</guid>
      <dc:creator>jakarman</dc:creator>
      <dc:date>2013-09-09T06:24:50Z</dc:date>
    </item>
    <item>
      <title>Re: Test whether a macro located in SASAUTOS exists</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Test-whether-a-macro-located-in-SASAUTOS-exists/m-p/129300#M26380</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi Jaap,&lt;/P&gt;&lt;P&gt;Thank you for pointing out the SAS options related to macro source location. I have found mautocomploc option, which writes the macro location to the log as it is compiling. Do&amp;nbsp; you know if there is a corresponding macro variable that would contain the location, so that I could refer to it programmatically?&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Or would I need to use the option mautolocindes and then use proc catalog to see the path names of macros that have been compiled/invoked in the program?&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I am running programs in batch mode, using Version 9.3 (TS1M1).&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Marty Porter&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Fri, 18 Jul 2014 18:51:32 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Test-whether-a-macro-located-in-SASAUTOS-exists/m-p/129300#M26380</guid>
      <dc:creator>Marty</dc:creator>
      <dc:date>2014-07-18T18:51:32Z</dc:date>
    </item>
    <item>
      <title>Re: Test whether a macro located in SASAUTOS exists</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Test-whether-a-macro-located-in-SASAUTOS-exists/m-p/129301#M26381</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Could this solution deal with macro source files containing more than one macro&lt;/P&gt;&lt;P&gt; - my problem?&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I want to build a register linking macros to .sas programs. Then I shall "know" all the macros "out there". Sometimes the method might fail because a macro invocation might be named dynamically (%&amp;amp;macroName), but I cannot believe a macro definition could be named that way.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;With a way of addressing all sas code ( piping dir /b /s \*.sas or find / -name '*.sas' ) a data step could (perhaps) provide a register of all macro invocation.&lt;/P&gt;&lt;P&gt;I could use that even more.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;peterC&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Fri, 18 Jul 2014 20:59:19 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Test-whether-a-macro-located-in-SASAUTOS-exists/m-p/129301#M26381</guid>
      <dc:creator>Peter_C</dc:creator>
      <dc:date>2014-07-18T20:59:19Z</dc:date>
    </item>
    <item>
      <title>Re: Test whether a macro located in SASAUTOS exists</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Test-whether-a-macro-located-in-SASAUTOS-exists/m-p/129302#M26382</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Autocall macros are supposed to be one macro with the name of the file matching that of the Macro. ie c:\directory\subdirectory\macroname.sas&lt;/P&gt;&lt;P&gt;contains %macro macroname ...&lt;/P&gt;&lt;P&gt;If you violate that then odd things may happen when related to SASAutos.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Fri, 18 Jul 2014 23:29:52 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Test-whether-a-macro-located-in-SASAUTOS-exists/m-p/129302#M26382</guid>
      <dc:creator>ballardw</dc:creator>
      <dc:date>2014-07-18T23:29:52Z</dc:date>
    </item>
    <item>
      <title>Re: Test whether a macro located in SASAUTOS exists</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Test-whether-a-macro-located-in-SASAUTOS-exists/m-p/129303#M26383</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;trying to link macro-namings to sas code&amp;nbsp; is a very limited approach&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Suppose you could gather all sas logging of your involved sas programs. In that case you could analyze the logs of them to get the image what macro-s are touched with that subset.&amp;nbsp; &lt;/P&gt;&lt;P&gt;The &lt;A name="n188e0nhl068hzn1unfft60d9aj2"&gt;&lt;/A&gt;MAUTOCOMPLOC System Option is the one giving&amp;nbsp; the location and you can choose to display the full path.&amp;nbsp; &lt;/P&gt;&lt;P&gt;This only is applicable to mautocall type macro-s.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;These autocall macro-s are the subset of macros that are not been pre-compiled.&lt;/P&gt;&lt;P&gt;They must have a fitted name in OS level, the one must be found also using concatenation with filenames.&lt;/P&gt;&lt;P&gt;An Unix issue: use only lowercase letters in the OS-filenames, no capitals. The SAS languages is not case sensitive but Unix is, a translations is imbedded.&amp;nbsp;&amp;nbsp; &lt;/P&gt;&lt;P&gt;a Windows issue is that the OS is case-insensitive but allowed are naming containing all low and upper cases a you like.&lt;/P&gt;&lt;P&gt;The concatenation is a good technical trick to solve Life-cycle references questions. The known path on a OS is similar. The sas-config eg the SAShelp SASmacros is full with this approach. In that cases minimizing additional technical tricks for accessing objects and rely on naming conventions for isolation.&amp;nbsp;&amp;nbsp; &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Autocall macros are not the only way to define those.&lt;/P&gt;&lt;P&gt;-&amp;nbsp; A %include or other type of sas-code can define and use also macro-s&lt;/P&gt;&lt;P&gt;- Running some compiled sas-code can result in including additional sas-code containing macro-s. &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;There are a lot of reasons making an source-code analyzes on use macro-s impossible even you only look at the subset of the autocall ones.&lt;/P&gt;&lt;P&gt;- nested macro-s are possible only called when a certain condition is met. Error recovery is a common one. That macro is essential a part of the logical design seldom used, but when needed may be essential.&lt;/P&gt;&lt;P&gt;- redefining a macro as a standard in-line stream is often done. DI (and others) generated code is having a lot of that.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;You are not the fist one or the last with this kind of questions. SAS&amp;nbsp; has tried to do this with scaproc. Conversion old code to more modular approach for parallel processing.&lt;/P&gt;&lt;P&gt;&lt;A href="http://support.sas.com/documentation/cdl/en/proc/66663/HTML/default/viewer.htm#p1jvpkfx4equbkn1llhk2or03r0i.htm" title="http://support.sas.com/documentation/cdl/en/proc/66663/HTML/default/viewer.htm#p1jvpkfx4equbkn1llhk2or03r0i.htm"&gt;Base SAS(R) 9.4 Procedures Guide, Second Edition&lt;/A&gt; (scaproc), see alo the limitations &lt;A href="http://support.sas.com/resources/papers/proceedings12/237-2012.pdf" title="http://support.sas.com/resources/papers/proceedings12/237-2012.pdf"&gt;http://support.sas.com/resources/papers/proceedings12/237-2012.pdf&lt;/A&gt;. Usage of this is hidden in the menus of Eguide.&amp;nbsp;&amp;nbsp; &lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Sat, 19 Jul 2014 06:14:10 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Test-whether-a-macro-located-in-SASAUTOS-exists/m-p/129303#M26383</guid>
      <dc:creator>jakarman</dc:creator>
      <dc:date>2014-07-19T06:14:10Z</dc:date>
    </item>
    <item>
      <title>Re: Test whether a macro located in SASAUTOS exists</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Test-whether-a-macro-located-in-SASAUTOS-exists/m-p/129304#M26384</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;&lt;A __default_attr="260198" __jive_macro_name="user" class="jive_macro jive_macro_user" data-objecttype="3" href="https://communities.sas.com/"&gt;&lt;/A&gt;&lt;/P&gt;&lt;P&gt;It's certainly not good practice but I've seen code like:&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;%macro init;&lt;/P&gt;&lt;P&gt;%mend;&lt;/P&gt;&lt;P&gt;%macro something;&lt;/P&gt;&lt;P&gt;%mend;&lt;/P&gt;&lt;P&gt;....&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;And the whole code had been stored in a file "init.sas" in a location defined in SASAUTOS. So when calling %init: in a program all the other macros got compiled as well and became available for calling.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Sat, 19 Jul 2014 09:42:41 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Test-whether-a-macro-located-in-SASAUTOS-exists/m-p/129304#M26384</guid>
      <dc:creator>Patrick</dc:creator>
      <dc:date>2014-07-19T09:42:41Z</dc:date>
    </item>
    <item>
      <title>Re: Test whether a macro located in SASAUTOS exists</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Test-whether-a-macro-located-in-SASAUTOS-exists/m-p/129305#M26385</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;When i run the following code on SAS EG 6.1 connected to SAS 9.4&amp;nbsp; :&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P style="padding-left: 30px;"&gt;proc catalog catalog=work.sasmac1;&lt;/P&gt;&lt;P style="padding-left: 30px;"&gt;contents;&lt;/P&gt;&lt;P style="padding-left: 30px;"&gt;Run;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;This is what i see in results window.&amp;nbsp; But i don't understand how these macros are getting &lt;STRONG&gt;precompiled&lt;/STRONG&gt;. Also i don't see where the Macro &lt;STRONG&gt;CHECKFMT&lt;/STRONG&gt; is even located. I see that&amp;nbsp; macro &lt;STRONG&gt;TRIM&lt;/STRONG&gt; is located in SASAUTOS location but what about the others including CHECKFMT ? Also how is it that ONLY&amp;nbsp; the macro TRIM from SASAUTOS location gets precompiled but NOT others. This means it is being invoked at the time of Workspace server invocation somehwere but i am not sure where exactly.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Anyone have any ideas on this?&lt;/P&gt;&lt;P style="text-align: center;"&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/P&gt;&lt;TABLE cellpadding="0" cellspacing="0" class="table"&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD class="b rowheader" nowrap="nowrap" style="text-align: right;"&gt;1&lt;/TD&gt;&lt;TD class="b data" nowrap="nowrap" style="text-align: left;"&gt;CHECKFMT&lt;/TD&gt;&lt;TD class="b data" nowrap="nowrap" style="text-align: left;"&gt;MACRO&lt;/TD&gt;&lt;TD class="b data" nowrap="nowrap" style="text-align: right;"&gt;10/03/2014 00:50:50&lt;/TD&gt;&lt;TD class="b data" nowrap="nowrap" style="text-align: right;"&gt;10/03/2014 00:50:50&lt;/TD&gt;&lt;TD class="b data" nowrap="nowrap" style="text-align: left;"&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD class="b rowheader" nowrap="nowrap" style="text-align: right;"&gt;2&lt;/TD&gt;&lt;TD class="b data" nowrap="nowrap" style="text-align: left;"&gt;ECLIBASSIGN&lt;/TD&gt;&lt;TD class="b data" nowrap="nowrap" style="text-align: left;"&gt;MACRO&lt;/TD&gt;&lt;TD class="b data" nowrap="nowrap" style="text-align: right;"&gt;10/03/2014 00:50:50&lt;/TD&gt;&lt;TD class="b data" nowrap="nowrap" style="text-align: right;"&gt;10/03/2014 00:50:50&lt;/TD&gt;&lt;TD class="b data" nowrap="nowrap" style="text-align: left;"&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD class="b rowheader" nowrap="nowrap" style="text-align: right;"&gt;3&lt;/TD&gt;&lt;TD class="b data" nowrap="nowrap" style="text-align: left;"&gt;ECLIBUNASSIGN&lt;/TD&gt;&lt;TD class="b data" nowrap="nowrap" style="text-align: left;"&gt;MACRO&lt;/TD&gt;&lt;TD class="b data" nowrap="nowrap" style="text-align: right;"&gt;10/03/2014 00:50:50&lt;/TD&gt;&lt;TD class="b data" nowrap="nowrap" style="text-align: right;"&gt;10/03/2014 00:50:50&lt;/TD&gt;&lt;TD class="b data" nowrap="nowrap" style="text-align: left;"&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD class="b rowheader" nowrap="nowrap" style="text-align: right;"&gt;4&lt;/TD&gt;&lt;TD class="b data" nowrap="nowrap" style="text-align: left;"&gt;ENTERPRISEGUIDE&lt;/TD&gt;&lt;TD class="b data" nowrap="nowrap" style="text-align: left;"&gt;MACRO&lt;/TD&gt;&lt;TD class="b data" nowrap="nowrap" style="text-align: right;"&gt;10/03/2014 00:50:50&lt;/TD&gt;&lt;TD class="b data" nowrap="nowrap" style="text-align: right;"&gt;10/03/2014 00:50:50&lt;/TD&gt;&lt;TD class="b data" nowrap="nowrap" style="text-align: left;"&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD class="b rowheader" nowrap="nowrap" style="text-align: right;"&gt;5&lt;/TD&gt;&lt;TD class="b data" nowrap="nowrap" style="text-align: left;"&gt;TRIM&lt;/TD&gt;&lt;TD class="b data" nowrap="nowrap" style="text-align: left;"&gt;MACRO&lt;/TD&gt;&lt;TD class="b data" nowrap="nowrap" style="text-align: right;"&gt;10/03/2014 00:50:51&lt;/TD&gt;&lt;TD class="b data" nowrap="nowrap" style="text-align: right;"&gt;10/03/2014 00:50:51&lt;/TD&gt;&lt;TD class="b data" nowrap="nowrap" style="text-align: left;"&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD class="b rowheader" nowrap="nowrap" style="text-align: right;"&gt;6&lt;/TD&gt;&lt;TD class="b data" nowrap="nowrap" style="text-align: left;"&gt;_EG_CONDITIONAL_DROPDS&lt;/TD&gt;&lt;TD class="b data" nowrap="nowrap" style="text-align: left;"&gt;MACRO&lt;/TD&gt;&lt;TD class="b data" nowrap="nowrap" style="text-align: right;"&gt;10/03/2014 00:50:50&lt;/TD&gt;&lt;TD class="b data" nowrap="nowrap" style="text-align: right;"&gt;10/03/2014 00:50:50&lt;/TD&gt;&lt;TD class="b data" nowrap="nowrap" style="text-align: left;"&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD class="b rowheader" nowrap="nowrap" style="text-align: right;"&gt;7&lt;/TD&gt;&lt;TD class="b data" nowrap="nowrap" style="text-align: left;"&gt;_EG_ENSUREHTMLBLUEEXISTS&lt;/TD&gt;&lt;TD class="b data" nowrap="nowrap" style="text-align: left;"&gt;MACRO&lt;/TD&gt;&lt;TD class="b data" nowrap="nowrap" style="text-align: right;"&gt;10/03/2014 00:50:51&lt;/TD&gt;&lt;TD class="b data" nowrap="nowrap" style="text-align: right;"&gt;10/03/2014 00:50:51&lt;/TD&gt;&lt;TD class="b data" nowrap="nowrap" style="text-align: left;"&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD class="b rowheader" nowrap="nowrap" style="text-align: right;"&gt;8&lt;/TD&gt;&lt;TD class="b data" nowrap="nowrap" style="text-align: left;"&gt;_EG_HIDENOTESANDSOURCE&lt;/TD&gt;&lt;TD class="b data" nowrap="nowrap" style="text-align: left;"&gt;MACRO&lt;/TD&gt;&lt;TD class="b data" nowrap="nowrap" style="text-align: right;"&gt;10/03/2014 00:50:50&lt;/TD&gt;&lt;TD class="b data" nowrap="nowrap" style="text-align: right;"&gt;10/03/2014 00:50:50&lt;/TD&gt;&lt;TD class="b data" nowrap="nowrap" style="text-align: left;"&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD class="b rowheader" nowrap="nowrap" style="text-align: right;"&gt;9&lt;/TD&gt;&lt;TD class="b data" nowrap="nowrap" style="text-align: left;"&gt;_EG_RESTORENOTESANDSOURCE&lt;/TD&gt;&lt;TD class="b data" nowrap="nowrap" style="text-align: left;"&gt;MACRO&lt;/TD&gt;&lt;TD class="b data" nowrap="nowrap" style="text-align: right;"&gt;10/03/2014 00:50:50&lt;/TD&gt;&lt;TD class="b data" nowrap="nowrap" style="text-align: right;"&gt;10/03/2014 00:50:50&lt;/TD&gt;&lt;TD class="b data" nowrap="nowrap" style="text-align: left;"&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD class="b rowheader" nowrap="nowrap" style="text-align: right;"&gt;10&lt;/TD&gt;&lt;TD class="b data" nowrap="nowrap" style="text-align: left;"&gt;_EG_WHEREPARAM&lt;/TD&gt;&lt;TD class="b data" nowrap="nowrap" style="text-align: left;"&gt;MACRO&lt;/TD&gt;&lt;TD class="b data" nowrap="nowrap" style="text-align: right;"&gt;10/03/2014 00:50:50&lt;/TD&gt;&lt;TD class="b data" nowrap="nowrap" style="text-align: right;"&gt;10/03/2014 00:50:50&lt;/TD&gt;&lt;TD class="b data" nowrap="nowrap" style="text-align: left;"&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD class="b rowheader" nowrap="nowrap" style="text-align: right;"&gt;11&lt;/TD&gt;&lt;TD class="b data" nowrap="nowrap" style="text-align: left;"&gt;_SAS_POPCHARTSIZE&lt;/TD&gt;&lt;TD class="b data" nowrap="nowrap" style="text-align: left;"&gt;MACRO&lt;/TD&gt;&lt;TD class="b data" nowrap="nowrap" style="text-align: right;"&gt;10/03/2014 00:50:50&lt;/TD&gt;&lt;TD class="b data" nowrap="nowrap" style="text-align: right;"&gt;10/03/2014 00:50:50&lt;/TD&gt;&lt;TD class="b data" nowrap="nowrap" style="text-align: left;"&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD class="b rowheader" nowrap="nowrap" style="text-align: right;"&gt;12&lt;/TD&gt;&lt;TD class="b data" nowrap="nowrap" style="text-align: left;"&gt;_SAS_PUSHCHARTSIZE&lt;/TD&gt;&lt;TD class="b data" nowrap="nowrap" style="text-align: left;"&gt;MACRO&lt;/TD&gt;&lt;TD class="b data" nowrap="nowrap" style="text-align: right;"&gt;10/03/2014 00:50:50&lt;/TD&gt;&lt;TD class="b data" nowrap="nowrap" style="text-align: right;"&gt;10/03/2014 00:50:50&lt;/TD&gt;&lt;TD class="b data" nowrap="nowrap" style="text-align: left;"&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD class="b rowheader" nowrap="nowrap" style="text-align: right;"&gt;13&lt;/TD&gt;&lt;TD class="b data" nowrap="nowrap" style="text-align: left;"&gt;_SAS_VERCOMP&lt;/TD&gt;&lt;TD class="b data" nowrap="nowrap" style="text-align: left;"&gt;MACRO&lt;/TD&gt;&lt;TD class="b data" nowrap="nowrap" style="text-align: right;"&gt;10/03/2014 00:50:50&lt;/TD&gt;&lt;TD class="b data" nowrap="nowrap" style="text-align: right;"&gt;10/03/2014 00:50:50&lt;/TD&gt;&lt;TD class="b data" nowrap="nowrap" style="text-align: left;"&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD class="b rowheader" nowrap="nowrap" style="text-align: right;"&gt;14&lt;/TD&gt;&lt;TD class="b data" nowrap="nowrap" style="text-align: left;"&gt;_SAS_VERCONDCODE&lt;/TD&gt;&lt;TD class="b data" nowrap="nowrap" style="text-align: left;"&gt;MACRO&lt;/TD&gt;&lt;TD class="b data" nowrap="nowrap" style="text-align: right;"&gt;10/03/2014 00:50:50&lt;/TD&gt;&lt;TD class="b data" nowrap="nowrap" style="text-align: right;"&gt;10/03/2014 00:50:50&lt;/TD&gt;&lt;TD class="b data" nowrap="nowrap" style="text-align: left;"&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Fri, 03 Oct 2014 06:54:06 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Test-whether-a-macro-located-in-SASAUTOS-exists/m-p/129305#M26385</guid>
      <dc:creator>pchegoor</dc:creator>
      <dc:date>2014-10-03T06:54:06Z</dc:date>
    </item>
    <item>
      <title>Re: Test whether a macro located in SASAUTOS exists</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Test-whether-a-macro-located-in-SASAUTOS-exists/m-p/129306#M26386</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;You see a lot of namings that are related to Eguide. The standard Trim macro function look to be one that is a macro not SAS internal resolved.&lt;/P&gt;&lt;P&gt;Eguide will put those in every time it will run some code. SAS-macro-s are also used by SAS not only by you.&lt;/P&gt;&lt;P&gt;Not very interesting where SAS did get those unless:&lt;/P&gt;&lt;P&gt;- You are having some strange problems and are debugging those.&lt;/P&gt;&lt;P&gt;- You are changing macro options where macro-s can be found. The SAS-system is delivered with a set related to the installation. &lt;/P&gt;&lt;P&gt;&amp;nbsp; Do not overwrite that one, extend those settings with own paths when needed.&amp;nbsp;&amp;nbsp; &lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Fri, 03 Oct 2014 07:09:41 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Test-whether-a-macro-located-in-SASAUTOS-exists/m-p/129306#M26386</guid>
      <dc:creator>jakarman</dc:creator>
      <dc:date>2014-10-03T07:09:41Z</dc:date>
    </item>
    <item>
      <title>Re: Test whether a macro located in SASAUTOS exists</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Test-whether-a-macro-located-in-SASAUTOS-exists/m-p/129307#M26387</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;further to Jaap's message&lt;/P&gt;&lt;P&gt;since 9.2 the base SAS language provides 2 unusual options - INSERT and APPEND allow us to extend the value of the SASAUTOS option with paths to additional macro libraries. &lt;/P&gt;&lt;P&gt;INSERT and APPEBD also work for other "list" options - most helpfully FMTSEARCH&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Fri, 03 Oct 2014 07:24:49 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Test-whether-a-macro-located-in-SASAUTOS-exists/m-p/129307#M26387</guid>
      <dc:creator>Peter_C</dc:creator>
      <dc:date>2014-10-03T07:24:49Z</dc:date>
    </item>
    <item>
      <title>Re: Test whether a macro located in SASAUTOS exists</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Test-whether-a-macro-located-in-SASAUTOS-exists/m-p/129308#M26388</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;&lt;A href="http://support.sas.com/documentation/cdl/en/proc/65145/HTML/default/viewer.htm#p1s1ps1jqsj2yvn141gjhur8408y.htm" title="http://support.sas.com/documentation/cdl/en/proc/65145/HTML/default/viewer.htm#p1s1ps1jqsj2yvn141gjhur8408y.htm"&gt;Base SAS(R) 9.3 Procedures Guide, Second Edition&lt;/A&gt; (insert append list applicable)&lt;/P&gt;&lt;P&gt;&lt;A href="http://support.sas.com/documentation/cdl/en/lesysoptsref/64892/HTML/default/viewer.htm#p1q9ay0ai0h2ein1n68qxomnm3q7.htm" title="http://support.sas.com/documentation/cdl/en/lesysoptsref/64892/HTML/default/viewer.htm#p1q9ay0ai0h2ein1n68qxomnm3q7.htm"&gt;SAS(R) 9.3 System Options: Reference, Second Edition&lt;/A&gt; (append=)&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Fri, 03 Oct 2014 07:31:12 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Test-whether-a-macro-located-in-SASAUTOS-exists/m-p/129308#M26388</guid>
      <dc:creator>jakarman</dc:creator>
      <dc:date>2014-10-03T07:31:12Z</dc:date>
    </item>
  </channel>
</rss>

