<?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: call execute with %nrbquote but still trying to resolve macro variable references in SAS Programming</title>
    <link>https://communities.sas.com/t5/SAS-Programming/call-execute-with-nrbquote-but-still-trying-to-resolve-macro/m-p/784525#M250380</link>
    <description>&lt;P&gt;&lt;SPAN&gt;Thanks for your response.&lt;/SPAN&gt;&lt;/P&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;I can see the difference in the log when I use %nrbquote and %nrstr - however there is still an issue when I use %nrstr. I was focussed (probably wrongly) on the hidden triggers in string2 (which I was expecting to be revealed during execution) rather than the more obvious %maxl trigger that would be detected during compilation! As you can see below in the log, SAS is still trying to resolve the hidden triggers contained in the string2 variable when I use %nrstr - any ideas how to stop this happening?&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;1 &amp;nbsp; &amp;nbsp; &amp;nbsp;+ %maxl(dsn=DS1&lt;DIV&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; &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;,&lt;/DIV&gt;&lt;DIV&gt;MLOGIC(MAXL): &amp;nbsp;Beginning execution.&lt;/DIV&gt;&lt;DIV&gt;2 &amp;nbsp; &amp;nbsp; &amp;nbsp;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;lib1=SD2&lt;/DIV&gt;&lt;DIV&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; &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;,&lt;/DIV&gt;&lt;DIV&gt;3 &amp;nbsp; &amp;nbsp; &amp;nbsp;+&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; lib2=SD3&lt;/DIV&gt;&lt;DIV&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; &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;,&lt;/DIV&gt;&lt;DIV&gt;4 &amp;nbsp; &amp;nbsp; &amp;nbsp;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;pdbf=Y &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; lib1f=Y &amp;nbsp; &amp;nbsp; &amp;nbsp; ,&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;setstr="set &amp;amp;lib1..&amp;amp;dsn &amp;amp;lib2..&amp;amp;dsn;" &amp;nbsp;,&lt;/DIV&gt;&lt;DIV&gt;WARNING: Apparent symbolic reference DSN not resolved.&lt;/DIV&gt;&lt;DIV&gt;WARNING: Apparent symbolic reference LIB1 not resolved.&lt;/DIV&gt;&lt;DIV&gt;WARNING: Apparent symbolic reference DSN not resolved.&lt;/DIV&gt;&lt;DIV&gt;WARNING: Apparent symbolic reference LIB2 not resolved.&lt;/DIV&gt;&lt;DIV&gt;WARNING: Apparent symbolic reference DSN not resolved.&lt;/DIV&gt;&lt;DIV&gt;5 &amp;nbsp; &amp;nbsp; &amp;nbsp;+ &amp;nbsp; &amp;nbsp;lib2f=Y &amp;nbsp; &amp;nbsp; &amp;nbsp; );&lt;/DIV&gt;&lt;DIV&gt;MLOGIC(MAXL): &amp;nbsp;Parameter DSN has value DS1&lt;/DIV&gt;&lt;DIV&gt;MLOGIC(MAXL): &amp;nbsp;Parameter LIB1 has value SD2&lt;/DIV&gt;&lt;DIV&gt;MLOGIC(MAXL): &amp;nbsp;Parameter LIB2 has value SD3&lt;/DIV&gt;&lt;DIV&gt;MLOGIC(MAXL): &amp;nbsp;Parameter PDBF has value Y&lt;/DIV&gt;&lt;DIV&gt;MLOGIC(MAXL): &amp;nbsp;Parameter LIB1F has value Y&lt;/DIV&gt;&lt;DIV&gt;MLOGIC(MAXL): &amp;nbsp;Parameter SETSTR has value "set&amp;nbsp; &amp;amp;lib1..&amp;amp;dsn &amp;amp;lib2..&amp;amp;dsn;"&lt;/DIV&gt;&lt;SPAN&gt;MLOGIC(MAXL): &amp;nbsp;Parameter LIB2F has value Y&lt;/SPAN&gt;&lt;/DIV&gt;</description>
    <pubDate>Tue, 07 Dec 2021 14:09:34 GMT</pubDate>
    <dc:creator>KT0</dc:creator>
    <dc:date>2021-12-07T14:09:34Z</dc:date>
    <item>
      <title>call execute with %nrbquote but still trying to resolve macro variable references</title>
      <link>https://communities.sas.com/t5/SAS-Programming/call-execute-with-nrbquote-but-still-trying-to-resolve-macro/m-p/784297#M250262</link>
      <description>&lt;P&gt;Hello,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;I have the following call to macro %maxl using call execute. It is called based on certain conditions within another macro.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;call execute('%nrbquote(%maxl(dsn='||currds||',&lt;BR /&gt;lib1='||librar1||',&lt;BR /&gt;lib2='||librar2||',&lt;BR /&gt;pdbf='||pos1||',&lt;BR /&gt;lib1f='||pos2||',&lt;BR /&gt;setstr='||string2||',&lt;BR /&gt;lib2f='||pos3||'));');&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;string2 will have a value like "set &amp;amp;lib1..&amp;amp;dsn;". I don't want the macro variable references within string2 to be resolved until string2 is used in the maxl macro.&amp;nbsp; However, even with the use of %nrbquote SAS is trying to resolve the macro variable references in the string. Here is a excerpt from the log:&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;MLOGIC(MAXL): Beginning execution.&lt;BR /&gt;WARNING: Apparent symbolic reference LIB1 not resolved.&lt;BR /&gt;WARNING: Apparent symbolic reference DSN not resolved.&lt;/P&gt;&lt;P&gt;LIB1 and LIB2 are then resolved.&lt;BR /&gt;MLOGIC(MAXL): Parameter SETSTR has value "set &amp;amp;lib1..&amp;amp;dsn;"&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Can anyone spot what I am missing? Thanks!&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Mon, 06 Dec 2021 12:37:02 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/call-execute-with-nrbquote-but-still-trying-to-resolve-macro/m-p/784297#M250262</guid>
      <dc:creator>KT0</dc:creator>
      <dc:date>2021-12-06T12:37:02Z</dc:date>
    </item>
    <item>
      <title>Re: call execute with %nrbquote but still trying to resolve macro variable references</title>
      <link>https://communities.sas.com/t5/SAS-Programming/call-execute-with-nrbquote-but-still-trying-to-resolve-macro/m-p/784300#M250265</link>
      <description>Try %nrstr(  )</description>
      <pubDate>Mon, 06 Dec 2021 12:48:55 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/call-execute-with-nrbquote-but-still-trying-to-resolve-macro/m-p/784300#M250265</guid>
      <dc:creator>Ksharp</dc:creator>
      <dc:date>2021-12-06T12:48:55Z</dc:date>
    </item>
    <item>
      <title>Re: call execute with %nrbquote but still trying to resolve macro variable references</title>
      <link>https://communities.sas.com/t5/SAS-Programming/call-execute-with-nrbquote-but-still-trying-to-resolve-macro/m-p/784301#M250266</link>
      <description>I did try it although I didn't really expect it to work as my understanding is it masks the macro triggers at compilation.&lt;BR /&gt;</description>
      <pubDate>Mon, 06 Dec 2021 12:57:20 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/call-execute-with-nrbquote-but-still-trying-to-resolve-macro/m-p/784301#M250266</guid>
      <dc:creator>KT0</dc:creator>
      <dc:date>2021-12-06T12:57:20Z</dc:date>
    </item>
    <item>
      <title>Re: call execute with %nrbquote but still trying to resolve macro variable references</title>
      <link>https://communities.sas.com/t5/SAS-Programming/call-execute-with-nrbquote-but-still-trying-to-resolve-macro/m-p/784313#M250275</link>
      <description>&lt;P&gt;%NRSTR() is what you want.&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;%NRSTR is used to mask triggers during &lt;EM&gt;macro&lt;/EM&gt; compilation, rather than &lt;EM&gt;macro&lt;/EM&gt; execution.&amp;nbsp; This is different (earlier) the data step compilation and data step execution.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;The concept of macro compilation vs macro execution breaks down (for me at least), when you use quoting function in 'open code' (i.e. outside of a macro definition).&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;One easy rule is "use %str() / %nrstr() if you can see the symbol you are trying to mask, if you cannot see the symbol (because the symbol only appears as a results of resolving a macro reference), use %bquote/%superq)."&amp;nbsp; In this case, you are trying to mask the % sign you can see in %max, so using %nrstr is appropriate.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Then end result should be that the CALL EXECUTE only generates the macro call to %max (this is all you should see in the log with with + prefixes indicating the lines generated by CALL EXECUTE), the CALL EXECUTE will not actually execute the macro.&lt;/P&gt;</description>
      <pubDate>Mon, 06 Dec 2021 14:10:59 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/call-execute-with-nrbquote-but-still-trying-to-resolve-macro/m-p/784313#M250275</guid>
      <dc:creator>Quentin</dc:creator>
      <dc:date>2021-12-06T14:10:59Z</dc:date>
    </item>
    <item>
      <title>Re: call execute with %nrbquote but still trying to resolve macro variable references</title>
      <link>https://communities.sas.com/t5/SAS-Programming/call-execute-with-nrbquote-but-still-trying-to-resolve-macro/m-p/784336#M250291</link>
      <description>&lt;P&gt;Use %NRSTR().&amp;nbsp; And unless the values of your data step variable include other string you need to protect just wrap it around the macro name (or even just the % itself).&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;call execute(cats('%nrstr(%maxl)'
,'(dsn=',currds
,',lib1=',librar1
,',lib2=',librar2
,',pdbf=',pos1
,',lib1f=',pos2
,',setstr=',string2
,',lib2f=',pos3
,');'
);&lt;/CODE&gt;&lt;/PRE&gt;</description>
      <pubDate>Mon, 06 Dec 2021 16:07:37 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/call-execute-with-nrbquote-but-still-trying-to-resolve-macro/m-p/784336#M250291</guid>
      <dc:creator>Tom</dc:creator>
      <dc:date>2021-12-06T16:07:37Z</dc:date>
    </item>
    <item>
      <title>Re: call execute with %nrbquote but still trying to resolve macro variable references</title>
      <link>https://communities.sas.com/t5/SAS-Programming/call-execute-with-nrbquote-but-still-trying-to-resolve-macro/m-p/784509#M250373</link>
      <description>%nrbquote  would resolve macro variable , if macro variable can't be resolved then MASKED it .&lt;BR /&gt;It is unlike %superq() which would mask macro variables immediately .</description>
      <pubDate>Tue, 07 Dec 2021 11:55:26 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/call-execute-with-nrbquote-but-still-trying-to-resolve-macro/m-p/784509#M250373</guid>
      <dc:creator>Ksharp</dc:creator>
      <dc:date>2021-12-07T11:55:26Z</dc:date>
    </item>
    <item>
      <title>Re: call execute with %nrbquote but still trying to resolve macro variable references</title>
      <link>https://communities.sas.com/t5/SAS-Programming/call-execute-with-nrbquote-but-still-trying-to-resolve-macro/m-p/784525#M250380</link>
      <description>&lt;P&gt;&lt;SPAN&gt;Thanks for your response.&lt;/SPAN&gt;&lt;/P&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;I can see the difference in the log when I use %nrbquote and %nrstr - however there is still an issue when I use %nrstr. I was focussed (probably wrongly) on the hidden triggers in string2 (which I was expecting to be revealed during execution) rather than the more obvious %maxl trigger that would be detected during compilation! As you can see below in the log, SAS is still trying to resolve the hidden triggers contained in the string2 variable when I use %nrstr - any ideas how to stop this happening?&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;1 &amp;nbsp; &amp;nbsp; &amp;nbsp;+ %maxl(dsn=DS1&lt;DIV&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; &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;,&lt;/DIV&gt;&lt;DIV&gt;MLOGIC(MAXL): &amp;nbsp;Beginning execution.&lt;/DIV&gt;&lt;DIV&gt;2 &amp;nbsp; &amp;nbsp; &amp;nbsp;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;lib1=SD2&lt;/DIV&gt;&lt;DIV&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; &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;,&lt;/DIV&gt;&lt;DIV&gt;3 &amp;nbsp; &amp;nbsp; &amp;nbsp;+&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; lib2=SD3&lt;/DIV&gt;&lt;DIV&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; &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;,&lt;/DIV&gt;&lt;DIV&gt;4 &amp;nbsp; &amp;nbsp; &amp;nbsp;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;pdbf=Y &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; lib1f=Y &amp;nbsp; &amp;nbsp; &amp;nbsp; ,&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;setstr="set &amp;amp;lib1..&amp;amp;dsn &amp;amp;lib2..&amp;amp;dsn;" &amp;nbsp;,&lt;/DIV&gt;&lt;DIV&gt;WARNING: Apparent symbolic reference DSN not resolved.&lt;/DIV&gt;&lt;DIV&gt;WARNING: Apparent symbolic reference LIB1 not resolved.&lt;/DIV&gt;&lt;DIV&gt;WARNING: Apparent symbolic reference DSN not resolved.&lt;/DIV&gt;&lt;DIV&gt;WARNING: Apparent symbolic reference LIB2 not resolved.&lt;/DIV&gt;&lt;DIV&gt;WARNING: Apparent symbolic reference DSN not resolved.&lt;/DIV&gt;&lt;DIV&gt;5 &amp;nbsp; &amp;nbsp; &amp;nbsp;+ &amp;nbsp; &amp;nbsp;lib2f=Y &amp;nbsp; &amp;nbsp; &amp;nbsp; );&lt;/DIV&gt;&lt;DIV&gt;MLOGIC(MAXL): &amp;nbsp;Parameter DSN has value DS1&lt;/DIV&gt;&lt;DIV&gt;MLOGIC(MAXL): &amp;nbsp;Parameter LIB1 has value SD2&lt;/DIV&gt;&lt;DIV&gt;MLOGIC(MAXL): &amp;nbsp;Parameter LIB2 has value SD3&lt;/DIV&gt;&lt;DIV&gt;MLOGIC(MAXL): &amp;nbsp;Parameter PDBF has value Y&lt;/DIV&gt;&lt;DIV&gt;MLOGIC(MAXL): &amp;nbsp;Parameter LIB1F has value Y&lt;/DIV&gt;&lt;DIV&gt;MLOGIC(MAXL): &amp;nbsp;Parameter SETSTR has value "set&amp;nbsp; &amp;amp;lib1..&amp;amp;dsn &amp;amp;lib2..&amp;amp;dsn;"&lt;/DIV&gt;&lt;SPAN&gt;MLOGIC(MAXL): &amp;nbsp;Parameter LIB2F has value Y&lt;/SPAN&gt;&lt;/DIV&gt;</description>
      <pubDate>Tue, 07 Dec 2021 14:09:34 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/call-execute-with-nrbquote-but-still-trying-to-resolve-macro/m-p/784525#M250380</guid>
      <dc:creator>KT0</dc:creator>
      <dc:date>2021-12-07T14:09:34Z</dc:date>
    </item>
    <item>
      <title>Re: call execute with %nrbquote but still trying to resolve macro variable references</title>
      <link>https://communities.sas.com/t5/SAS-Programming/call-execute-with-nrbquote-but-still-trying-to-resolve-macro/m-p/784526#M250381</link>
      <description>&lt;P&gt;&lt;SPAN&gt;Thanks but the problem is the dataset variable string2 does contain macro variable triggers and these are not being masked. When you say,&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN&gt;&lt;I&gt;&amp;nbsp;just wrap it around the macro name (or even just the % itself),&amp;nbsp;&lt;/I&gt;I'm not sure what you mean?&lt;/SPAN&gt;&lt;/P&gt;</description>
      <pubDate>Tue, 07 Dec 2021 14:11:00 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/call-execute-with-nrbquote-but-still-trying-to-resolve-macro/m-p/784526#M250381</guid>
      <dc:creator>KT0</dc:creator>
      <dc:date>2021-12-07T14:11:00Z</dc:date>
    </item>
    <item>
      <title>Re: call execute with %nrbquote but still trying to resolve macro variable references</title>
      <link>https://communities.sas.com/t5/SAS-Programming/call-execute-with-nrbquote-but-still-trying-to-resolve-macro/m-p/784560#M250395</link>
      <description>&lt;P&gt;Thanks for sharing the log.&amp;nbsp;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;This CALL EXECUTE is working with the %NRSTR, I would go back to look at how the macro call works, without call execute.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;As shown in the CALL EXECUTE log, currently you are generating the macro call:&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;%maxl(dsn=DS1
  ,lib1=SD2
  ,lib2=SD3
  ,pdbf=Y&lt;BR /&gt;  ,lib1f=Y
  ,setstr="set &amp;amp;lib1..&amp;amp;dsn &amp;amp;lib2..&amp;amp;dsn;"
  ,lib2f=Y)&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Is that the call you want?&amp;nbsp; If you submit that call, it will try to resolve the macro references &amp;amp;lib1 &amp;amp;dsn &amp;amp;lib2 before they exist.&amp;nbsp; Do you really want the set statement inside of quotes?&amp;nbsp;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Just like with using the macro language to generate SAS code, you want to start with working SAS code, when you're using CALL EXECUTE to generate macro calls, you want to start with a working macro call.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Maybe the following would work as a macro call:&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;%maxl(dsn=DS1
  ,lib1=SD2
  ,lib2=SD3
  ,pdbf=Y
  ,lib1f=Y
  ,setstr=%nrstr(set &amp;amp;lib1..&amp;amp;dsn &amp;amp;lib2..&amp;amp;dsn)
  ,lib2f=Y)

&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;With that approach you would need to %unquote the macro parameter SETSTR inside of the definition of %maxl.&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Once you have a macro call to %maxl that is working like you want, then you can go back to using CALL EXECUTE to generate the macro call.&lt;/P&gt;</description>
      <pubDate>Tue, 07 Dec 2021 16:12:17 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/call-execute-with-nrbquote-but-still-trying-to-resolve-macro/m-p/784560#M250395</guid>
      <dc:creator>Quentin</dc:creator>
      <dc:date>2021-12-07T16:12:17Z</dc:date>
    </item>
    <item>
      <title>Re: call execute with %nrbquote but still trying to resolve macro variable references</title>
      <link>https://communities.sas.com/t5/SAS-Programming/call-execute-with-nrbquote-but-still-trying-to-resolve-macro/m-p/784565#M250399</link>
      <description>&lt;BLOCKQUOTE&gt;&lt;HR /&gt;&lt;a href="https://communities.sas.com/t5/user/viewprofilepage/user-id/336480"&gt;@KT0&lt;/a&gt;&amp;nbsp;wrote:&lt;BR /&gt;
&lt;P&gt;&lt;SPAN&gt;Thanks but the problem is the dataset variable string2 does contain macro variable triggers and these are not being masked. When you say,&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN&gt;&lt;I&gt;&amp;nbsp;just wrap it around the macro name (or even just the % itself),&amp;nbsp;&lt;/I&gt;I'm not sure what you mean?&lt;/SPAN&gt;&lt;/P&gt;
&lt;HR /&gt;&lt;/BLOCKQUOTE&gt;
&lt;P&gt;Why would you want to mask the values generated from your dataset variables?&amp;nbsp; Those are the values you are using the generate the call to macro.&amp;nbsp; Put the value into the dataset variable that makes the macro call work.&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;A typical example.&amp;nbsp; You have some macro you want to call multiple times. For example consider the project to import a series of files. You have a macro that can import one. You make a dataset with the list of files. Then you use the dataset to call the macro once for each file.&amp;nbsp; To make it easier to set a macro variable at the top with the path of where to find the files.&amp;nbsp; Then you use the macro variable when generating the code.&amp;nbsp; When do you want that macro variable to be evaluated?&amp;nbsp; When the SAS code is pushed onto the stack?&lt;/P&gt;
&lt;P&gt;Code:&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data files;
  infile "dir /b &amp;amp;path\su*.csv" pipe truncover;
  input filename $200.;
  call execute(cats('%nrstr(%import)(filename=','&amp;amp;path\',filename,',dsname=',scan(filename,1,'.'),')'));
run;&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;Log:&lt;/P&gt;
&lt;PRE&gt;NOTE: CALL EXECUTE generated line.
1   + %import(filename=c:\downloads\Subaru.csv,dsname=Subaru)
SYSMACRONAME=IMPORT FILENAME=c:\downloads\Subaru.csv DSNAME=Subaru
2   + %import(filename=c:\downloads\Suzuki.csv,dsname=Suzuki)
SYSMACRONAME=IMPORT FILENAME=c:\downloads\Suzuki.csv DSNAME=Suzuki
&lt;/PRE&gt;
&lt;P&gt;Or when code is pulled back off the stack to run?&lt;/P&gt;
&lt;P&gt;Code:&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data files;
  infile "dir /b &amp;amp;path\su*.csv" pipe truncover;
  input filename $200.;
  call execute(cats('%nrstr(%import(filename=','&amp;amp;path\',filename,',dsname=',scan(filename,1,'.'),'))'));
run;&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;Log:&lt;/P&gt;
&lt;PRE&gt;1   + %import(filename=&amp;amp;path\Subaru.csv,dsname=Subaru)
SYSMACRONAME=IMPORT FILENAME=c:\downloads\Subaru.csv DSNAME=Subaru
2   + %import(filename=&amp;amp;path\Suzuki.csv,dsname=Suzuki)
SYSMACRONAME=IMPORT FILENAME=c:\downloads\Suzuki.csv DSNAME=Suzuki
&lt;/PRE&gt;
&lt;P&gt;But what happens if the macro has a bug that changes the value of PATH when it runs?&lt;/P&gt;
&lt;P&gt;Now the second call uses the path as changed by the first call.&lt;/P&gt;
&lt;PRE&gt;1   + %import(filename=&amp;amp;path\Subaru.csv,dsname=Subaru)
SYSMACRONAME=IMPORT FILENAME=c:\downloads\Subaru.csv DSNAME=Subaru
2   + %import(filename=&amp;amp;path\Suzuki.csv,dsname=Suzuki)
SYSMACRONAME=IMPORT FILENAME=c:\someother_path\Suzuki.csv DSNAME=Suzuki
&lt;/PRE&gt;
&lt;P&gt;Perhaps for some situations that is what you want, but probably not.&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>Tue, 07 Dec 2021 16:36:34 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/call-execute-with-nrbquote-but-still-trying-to-resolve-macro/m-p/784565#M250399</guid>
      <dc:creator>Tom</dc:creator>
      <dc:date>2021-12-07T16:36:34Z</dc:date>
    </item>
    <item>
      <title>Re: call execute with %nrbquote but still trying to resolve macro variable references</title>
      <link>https://communities.sas.com/t5/SAS-Programming/call-execute-with-nrbquote-but-still-trying-to-resolve-macro/m-p/784594#M250406</link>
      <description>&lt;P&gt;You want the value on one parameter to your macro call to refer to the values being passed as other arguments to the same macro call?&amp;nbsp; That is tricky enough without also adding the extra confusion of using CALL EXECUTE() to generate and run the macro call.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Why not just generate the value of SETSTR using the same information you used to generate the values of LIB1, LIB2 and DSN instead of muddy thinks up with the cross references.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data test;
  dsn='ds1';
  lib1='sd2';
  lib2='sd3';
  setstr=catx(' ','set',catx('.',lib1,dsn),catx('.',lib2,dsn));
  ...
run;&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Tue, 07 Dec 2021 18:33:07 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/call-execute-with-nrbquote-but-still-trying-to-resolve-macro/m-p/784594#M250406</guid>
      <dc:creator>Tom</dc:creator>
      <dc:date>2021-12-07T18:33:07Z</dc:date>
    </item>
    <item>
      <title>Re: call execute with %nrbquote but still trying to resolve macro variable references</title>
      <link>https://communities.sas.com/t5/SAS-Programming/call-execute-with-nrbquote-but-still-trying-to-resolve-macro/m-p/784924#M250476</link>
      <description>&lt;P&gt;You were right - I already had what I needed! I was complicating matters. I'm not sure it was possible to mask the triggers the way the string was.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Thanks for taking the time to look at it &lt;span class="lia-unicode-emoji" title=":slightly_smiling_face:"&gt;🙂&lt;/span&gt;&lt;/P&gt;</description>
      <pubDate>Wed, 08 Dec 2021 15:16:53 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/call-execute-with-nrbquote-but-still-trying-to-resolve-macro/m-p/784924#M250476</guid>
      <dc:creator>KT0</dc:creator>
      <dc:date>2021-12-08T15:16:53Z</dc:date>
    </item>
    <item>
      <title>Re: call execute with %nrbquote but still trying to resolve macro variable references</title>
      <link>https://communities.sas.com/t5/SAS-Programming/call-execute-with-nrbquote-but-still-trying-to-resolve-macro/m-p/785039#M250512</link>
      <description>Thanks but the problem is the dataset variable string2 does contain macro variable triggers and these are not being masked. When you say, just wrap it around the macro name (or even just the % itself), I'm not sure what you mean?&lt;BR /&gt;</description>
      <pubDate>Wed, 08 Dec 2021 23:14:25 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/call-execute-with-nrbquote-but-still-trying-to-resolve-macro/m-p/785039#M250512</guid>
      <dc:creator>KT0</dc:creator>
      <dc:date>2021-12-08T23:14:25Z</dc:date>
    </item>
    <item>
      <title>Re: call execute with %nrbquote but still trying to resolve macro variable references</title>
      <link>https://communities.sas.com/t5/SAS-Programming/call-execute-with-nrbquote-but-still-trying-to-resolve-macro/m-p/785040#M250513</link>
      <description>Thanks for your response.&lt;BR /&gt;&lt;BR /&gt;I can see the difference in the log when I use %nrbquote and %nrstr - however there is still an issue when I use %nrstr. I was focussed (probably wrongly) on the hidden triggers in string2 (which I was expecting to be revealed during execution) rather than the more obvious %maxl trigger that would be detected during compilation! As you can see below in the log, SAS is still trying to resolve the hidden triggers contained in the string2 variable when I use %nrstr - any ideas how to stop this happening?&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;1 + %maxl(dsn=DS1&lt;BR /&gt;,&lt;BR /&gt;MLOGIC(MAXL): Beginning execution.&lt;BR /&gt;2 + lib1=SD2&lt;BR /&gt;,&lt;BR /&gt;3 + lib2=SD3&lt;BR /&gt;,&lt;BR /&gt;4 + pdbf=Y , lib1f=Y ,&lt;BR /&gt;setstr="set &amp;amp;lib1..&amp;amp;dsn &amp;amp;lib2..&amp;amp;dsn;" ,&lt;BR /&gt;WARNING: Apparent symbolic reference DSN not resolved.&lt;BR /&gt;WARNING: Apparent symbolic reference LIB1 not resolved.&lt;BR /&gt;WARNING: Apparent symbolic reference DSN not resolved.&lt;BR /&gt;WARNING: Apparent symbolic reference LIB2 not resolved.&lt;BR /&gt;WARNING: Apparent symbolic reference DSN not resolved.&lt;BR /&gt;5 + lib2f=Y );&lt;BR /&gt;MLOGIC(MAXL): Parameter DSN has value DS1&lt;BR /&gt;MLOGIC(MAXL): Parameter LIB1 has value SD2&lt;BR /&gt;MLOGIC(MAXL): Parameter LIB2 has value SD3&lt;BR /&gt;MLOGIC(MAXL): Parameter PDBF has value Y&lt;BR /&gt;MLOGIC(MAXL): Parameter LIB1F has value Y&lt;BR /&gt;MLOGIC(MAXL): Parameter SETSTR has value "set &amp;amp;lib1..&amp;amp;dsn &amp;amp;lib2..&amp;amp;dsn;"&lt;BR /&gt;MLOGIC(MAXL): Parameter LIB2F has value Y&lt;BR /&gt;&lt;BR /&gt;</description>
      <pubDate>Wed, 08 Dec 2021 23:14:26 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/call-execute-with-nrbquote-but-still-trying-to-resolve-macro/m-p/785040#M250513</guid>
      <dc:creator>KT0</dc:creator>
      <dc:date>2021-12-08T23:14:26Z</dc:date>
    </item>
    <item>
      <title>Re: call execute with %nrbquote but still trying to resolve macro variable references</title>
      <link>https://communities.sas.com/t5/SAS-Programming/call-execute-with-nrbquote-but-still-trying-to-resolve-macro/m-p/785061#M250526</link>
      <description>&lt;P&gt;You need to wrap the self references in some type of macro quoting to get them into the macro without the macro processor attempting to expand them during the macro call.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Let's make a simple macro to demonstrate with:&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;%macro maxl(dsn,lib1,lib2,setstr);
%put &amp;amp;=setstr;
%let x=%unquote(&amp;amp;setstr);
%put &amp;amp;=x;
%mend;&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;If we call it without any macro quoting in the call we get the warnings (or we get the values some other already existing macro variables with those same names).&lt;/P&gt;
&lt;PRE&gt;2870   %maxl(dsn=DS1,lib1=SD2,lib2=SD3,setstr="set &amp;amp;lib1..&amp;amp;dsn &amp;amp;lib2..&amp;amp;dsn;")
WARNING: Apparent symbolic reference LIB1 not resolved.
WARNING: Apparent symbolic reference DSN not resolved.
WARNING: Apparent symbolic reference LIB2 not resolved.
WARNING: Apparent symbolic reference DSN not resolved.
SETSTR="set SD2.DS1 SD3.DS1;"
X="set SD2.DS1 SD3.DS1;"
&lt;/PRE&gt;
&lt;P&gt;If we add macro quoting the warnings go away.&lt;/P&gt;
&lt;PRE&gt;2871   %maxl(dsn=DS1,lib1=SD2,lib2=SD3,setstr=%nrstr("set &amp;amp;lib1..&amp;amp;dsn &amp;amp;lib2..&amp;amp;dsn;"))
SETSTR="set &amp;amp;lib1..&amp;amp;dsn &amp;amp;lib2..&amp;amp;dsn;"
X="set SD2.DS1 SD3.DS1;"
&lt;/PRE&gt;
&lt;P&gt;Now let's add the CALL EXECUTE wrapper.&lt;/P&gt;
&lt;P&gt;If we just pass that exact same string that worked we don't get the warnings, but the macro executes during the running of CALL EXECUTE and the code it generates is pushed onto the stack to run after the dataset step.&amp;nbsp; If the macro was doing anything that required evaluating the resutls of the SAS code generated earlier by the macro then you will have a timing problem.&amp;nbsp; Plus your SAS log will be really ugly and impossible to figure out.&amp;nbsp; With our simple test macro we get a note that the macro did not generate any actual SAS code to push onto the stack.&lt;/P&gt;
&lt;PRE&gt;2872   data _null_;
2873     call execute('%maxl(dsn=DS1,lib1=SD2,lib2=SD3,setstr=%nrstr("set &amp;amp;lib1..&amp;amp;dsn &amp;amp;lib2..&amp;amp;dsn;"))');
2874   run;

SETSTR="set &amp;amp;lib1..&amp;amp;dsn &amp;amp;lib2..&amp;amp;dsn;"
X="set SD2.DS1 SD3.DS1;"
NOTE: DATA statement used (Total process time):
      real time           0.00 seconds
      cpu time            0.00 seconds


NOTE: CALL EXECUTE routine executed successfully, but no SAS statements were generated.
&lt;/PRE&gt;
&lt;P&gt;So let's add some macro quoting in the string we pass to CALL EXECUTE.&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;First let's just protect the macro call itself from being seen while the code is pushed onto the stack.&amp;nbsp; So the code that gets pushed to run now looks right.&amp;nbsp; But the results look like what happens without the %NRSTR() around the value being passed for the SETSTR parameter.&lt;/P&gt;
&lt;PRE&gt;2875   data _null_;
2876     call execute('%nrstr(%maxl)(dsn=DS1,lib1=SD2,lib2=SD3,setstr=%nrstr("set &amp;amp;lib1..&amp;amp;dsn &amp;amp;lib2..&amp;amp;dsn;"))');
2877   run;

NOTE: DATA statement used (Total process time):
      real time           0.01 seconds
      cpu time            0.01 seconds


NOTE: CALL EXECUTE generated line.
WARNING: Apparent symbolic reference LIB1 not resolved.
WARNING: Apparent symbolic reference DSN not resolved.
WARNING: Apparent symbolic reference LIB2 not resolved.
WARNING: Apparent symbolic reference DSN not resolved.
1     + %maxl(dsn=DS1,lib1=SD2,lib2=SD3,setstr="set &amp;amp;lib1..&amp;amp;dsn &amp;amp;lib2..&amp;amp;dsn;")
SETSTR="set SD2.DS1 SD3.DS1;"
X="set SD2.DS1 SD3.DS1;"
&lt;/PRE&gt;
&lt;P&gt;How can we fix this?&amp;nbsp; We could wrap the new %NRSTR() around the whole string we pass to CALL EXECUTE.&lt;/P&gt;
&lt;PRE&gt;2878   data _null_;
2879     call execute('%nrstr(%maxl(dsn=DS1,lib1=SD2,lib2=SD3,setstr=%nrstr("set &amp;amp;lib1..&amp;amp;dsn &amp;amp;lib2..&amp;amp;dsn;")))');
2880   run;

NOTE: DATA statement used (Total process time):
      real time           0.00 seconds
      cpu time            0.00 seconds


NOTE: CALL EXECUTE generated line.
1     + %maxl(dsn=DS1,lib1=SD2,lib2=SD3,setstr=%nrstr("set &amp;amp;lib1..&amp;amp;dsn &amp;amp;lib2..&amp;amp;dsn;"))
SETSTR="set &amp;amp;lib1..&amp;amp;dsn &amp;amp;lib2..&amp;amp;dsn;"
X="set SD2.DS1 SD3.DS1;"
&lt;/PRE&gt;
&lt;P&gt;Now we get a nice SAS log and the macro references make their way into the value SETSTR without being resolved either during the running of CALL EXECUTE() or during the calling of the MAXL macro.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Of course you could also just use single quotes around the value SETSTR instead of double quotes.&amp;nbsp; But then you would need to use DEQUOTE() instead of %UNQUOTE() to bring the macro references to life.&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;%macro maxl(dsn,lib1,lib2,setstr);
%put &amp;amp;=setstr;
%let x=%sysfunc(dequote(&amp;amp;setstr));
%put &amp;amp;=x;
%mend;
&lt;/CODE&gt;&lt;/PRE&gt;
&lt;PRE&gt;2898   %maxl(dsn=DS1,lib1=SD2,lib2=SD3,setstr='set &amp;amp;lib1..&amp;amp;dsn &amp;amp;lib2..&amp;amp;dsn;')
SETSTR='set &amp;amp;lib1..&amp;amp;dsn &amp;amp;lib2..&amp;amp;dsn;'
X=set SD2.DS1 SD3.DS1;
&lt;/PRE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Thu, 09 Dec 2021 03:03:03 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/call-execute-with-nrbquote-but-still-trying-to-resolve-macro/m-p/785061#M250526</guid>
      <dc:creator>Tom</dc:creator>
      <dc:date>2021-12-09T03:03:03Z</dc:date>
    </item>
    <item>
      <title>Re: call execute with %nrbquote but still trying to resolve macro variable references</title>
      <link>https://communities.sas.com/t5/SAS-Programming/call-execute-with-nrbquote-but-still-trying-to-resolve-macro/m-p/785152#M250551</link>
      <description>&lt;P&gt;Thanks for walking it through with examples - it's really helpful. The final example does as I had intended. So that's two solutions now &lt;span class="lia-unicode-emoji" title=":slightly_smiling_face:"&gt;🙂&lt;/span&gt;&lt;/P&gt;</description>
      <pubDate>Thu, 09 Dec 2021 14:28:01 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/call-execute-with-nrbquote-but-still-trying-to-resolve-macro/m-p/785152#M250551</guid>
      <dc:creator>KT0</dc:creator>
      <dc:date>2021-12-09T14:28:01Z</dc:date>
    </item>
  </channel>
</rss>

