<?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: Odd use of %STR() at execution time_new in SAS Programming</title>
    <link>https://communities.sas.com/t5/SAS-Programming/Odd-use-of-STR-at-execution-time-new/m-p/484290#M125729</link>
    <description>&lt;P&gt;Thanks a ton it works for me.&lt;/P&gt;</description>
    <pubDate>Mon, 06 Aug 2018 07:59:22 GMT</pubDate>
    <dc:creator>ankitk321</dc:creator>
    <dc:date>2018-08-06T07:59:22Z</dc:date>
    <item>
      <title>Odd use of %STR() at execution time_new</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Odd-use-of-STR-at-execution-time-new/m-p/483803#M125515</link>
      <description>&lt;P&gt;After removing the %str from the below code it will not work and my values is coming from a call symput macro variable.Kindly help me how to resolve the same. I want to use it as ----&amp;gt;&amp;nbsp;&lt;SPAN&gt;%let string=a,123;b,&lt;/SPAN&gt;&lt;STRONG&gt;321&lt;/STRONG&gt;&lt;SPAN&gt;;c,&lt;/SPAN&gt;&lt;STRONG&gt;456&lt;/STRONG&gt;&lt;SPAN&gt;;d,&lt;/SPAN&gt;&lt;STRONG&gt;789&lt;/STRONG&gt;&lt;SPAN&gt;;e,&lt;/SPAN&gt;&lt;STRONG&gt;888&lt;/STRONG&gt;&lt;SPAN&gt;;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;%global string;&lt;/P&gt;&lt;P&gt;%let string=%str(a,123;b,&lt;STRONG&gt;321&lt;/STRONG&gt;;c,&lt;STRONG&gt;456&lt;/STRONG&gt;;d,&lt;STRONG&gt;789&lt;/STRONG&gt;;e,&lt;STRONG&gt;888&lt;/STRONG&gt;);&lt;/P&gt;&lt;P&gt;%put "&amp;amp;string.";&lt;/P&gt;&lt;P&gt;options mprint mlogic symbolgen;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;%macro&lt;/STRONG&gt; &lt;STRONG&gt;&lt;EM&gt;test&lt;/EM&gt;&lt;/STRONG&gt;;&lt;/P&gt;&lt;P&gt;%let word_cnt = %eval(%sysfunc(countc("&amp;amp;string.",';'))+1);/* Problem in this line */&lt;/P&gt;&lt;P&gt;%let count= &amp;amp;word_cnt;&lt;/P&gt;&lt;P&gt;%put &amp;amp;word_cnt.;&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;&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; */&lt;/P&gt;&lt;P&gt;%do i = 1 %to &amp;amp;word_cnt.;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;%let var&amp;amp;i=%sysfunc(trim(%qscan(&amp;amp;string.,&amp;amp;i,%str(';')))); /* Problem in this line...rest every thing is fine */&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;&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;/P&gt;&lt;P&gt;%put &amp;amp;&amp;amp;var&amp;amp;i;&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;&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;&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;/P&gt;&lt;P&gt;%end;&amp;nbsp;&lt;/P&gt;&lt;P&gt;%do j=&lt;STRONG&gt;1&lt;/STRONG&gt; %to &lt;STRONG&gt;5&lt;/STRONG&gt;;&lt;/P&gt;&lt;P&gt;%let dataset_key&amp;amp;j= %scan(%quote(&amp;amp;&amp;amp;var&amp;amp;j),1,%str(","));&lt;/P&gt;&lt;P&gt;%let dataset_Name&amp;amp;j= %scan(%quote(&amp;amp;&amp;amp;var&amp;amp;j),2,%str(","));&lt;/P&gt;&lt;P&gt;%put &amp;amp;&amp;amp;dataset_key&amp;amp;j;&lt;/P&gt;&lt;P&gt;%put &amp;amp;&amp;amp;dataset_Name&amp;amp;j;&lt;/P&gt;&lt;P&gt;%end;&lt;/P&gt;&lt;P&gt;% put &amp;amp;string;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;%mend&lt;/STRONG&gt; test;&amp;nbsp;&amp;nbsp;&lt;/P&gt;&lt;P&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;&lt;/P&gt;&lt;P&gt;%&lt;STRONG&gt;&lt;EM&gt;test&lt;/EM&gt;&lt;/STRONG&gt;;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Fri, 03 Aug 2018 14:57:01 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Odd-use-of-STR-at-execution-time-new/m-p/483803#M125515</guid>
      <dc:creator>ankitk321</dc:creator>
      <dc:date>2018-08-03T14:57:01Z</dc:date>
    </item>
    <item>
      <title>Re: Odd use of %STR() at execution time_new</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Odd-use-of-STR-at-execution-time-new/m-p/483815#M125520</link>
      <description>&lt;P&gt;Don't make us do work you have already done. SHOW US THE SASLOG (and put the options mprint mlogic symbolgen; statement at the top of your code)&lt;/P&gt;</description>
      <pubDate>Fri, 03 Aug 2018 15:16:52 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Odd-use-of-STR-at-execution-time-new/m-p/483815#M125520</guid>
      <dc:creator>PaigeMiller</dc:creator>
      <dc:date>2018-08-03T15:16:52Z</dc:date>
    </item>
    <item>
      <title>Re: Odd use of %STR() at execution time_new</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Odd-use-of-STR-at-execution-time-new/m-p/483819#M125523</link>
      <description>&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;%macro test;

%let word_cnt = %eval(%sysfunc(countw(&amp;amp;string,%str(;)))+1);/* Problem in this line */

%let count= &amp;amp;word_cnt;

%put &amp;amp;word_cnt.;                                                                                

%do i = 1 %to &amp;amp;word_cnt.;

 

%let var&amp;amp;i=%sysfunc(trim(%qscan(&amp;amp;string,&amp;amp;i,%str(;)))); /* Problem in this line...rest every thing is fine */                                                              

%put &amp;amp;&amp;amp;var&amp;amp;i;                                                                                                          

%end; 

%do j=1 %to 5;

%let dataset_key&amp;amp;j= %scan(%quote(&amp;amp;&amp;amp;var&amp;amp;j),1,%str(,));

%let dataset_Name&amp;amp;j= %scan(%quote(&amp;amp;&amp;amp;var&amp;amp;j),2,%str(,));

%put &amp;amp;&amp;amp;dataset_key&amp;amp;j;

%put &amp;amp;&amp;amp;dataset_Name&amp;amp;j;

%end;

%put &amp;amp;string;

%mend test;  
%test&lt;/CODE&gt;&lt;/PRE&gt;</description>
      <pubDate>Fri, 03 Aug 2018 15:21:44 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Odd-use-of-STR-at-execution-time-new/m-p/483819#M125523</guid>
      <dc:creator>novinosrin</dc:creator>
      <dc:date>2018-08-03T15:21:44Z</dc:date>
    </item>
    <item>
      <title>Re: Odd use of %STR() at execution time_new</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Odd-use-of-STR-at-execution-time-new/m-p/483835#M125533</link>
      <description>&lt;P&gt;And just what is the problem?&lt;/P&gt;
&lt;P&gt;For one thing&lt;/P&gt;
&lt;P&gt;&lt;FONT color="#ff0080" face="SAS Monospace" size="2"&gt;%let&lt;/FONT&gt;&lt;FONT face="SAS Monospace" size="2"&gt; string=a,123;&lt;/FONT&gt;&lt;FONT color="#ff0000" face="SAS Monospace" size="2"&gt;b&lt;/FONT&gt;&lt;FONT face="SAS Monospace" size="2"&gt;,&lt;/FONT&gt;&lt;FONT color="#008080" face="SAS Monospace" size="2"&gt;321&lt;/FONT&gt;&lt;FONT face="SAS Monospace" size="2"&gt;;&lt;/FONT&gt;&lt;FONT color="#ff0000" face="SAS Monospace" size="2"&gt;c&lt;/FONT&gt;&lt;FONT face="SAS Monospace" size="2"&gt;,&lt;/FONT&gt;&lt;FONT color="#008080" face="SAS Monospace" size="2"&gt;456&lt;/FONT&gt;&lt;FONT face="SAS Monospace" size="2"&gt;;&lt;/FONT&gt;&lt;FONT color="#ff0000" face="SAS Monospace" size="2"&gt;d&lt;/FONT&gt;&lt;FONT face="SAS Monospace" size="2"&gt;,&lt;/FONT&gt;&lt;FONT color="#008080" face="SAS Monospace" size="2"&gt;789&lt;/FONT&gt;&lt;FONT face="SAS Monospace" size="2"&gt;;&lt;/FONT&gt;&lt;FONT color="#ff0000" face="SAS Monospace" size="2"&gt;e&lt;/FONT&gt;&lt;FONT face="SAS Monospace" size="2"&gt;,&lt;/FONT&gt;&lt;FONT color="#008080" face="SAS Monospace" size="2"&gt;888&lt;/FONT&gt;&lt;FONT face="SAS Monospace" size="2"&gt;;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="SAS Monospace" size="2"&gt;The definition of string ends at the first semicolon as the end of the %let statement. Almost any time the delimiters , or ; are used you are causing your one problems. So &lt;STRONG&gt;why &lt;/STRONG&gt;do you have them? I do not see any use for of &amp;amp;string that requires the delimiters.&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="SAS Monospace" size="2"&gt;If you have paired values it might be better to have two space delimited lists instead of a complex &lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;&lt;FONT face="SAS Monospace" size="2"&gt;%macro dummy;
%let vstring=a  b  c  d  e ;
%let nstring= 123  321  456  789  888;
%let word_cnt = %sysfunc(countw(&amp;amp;vstring));
%put word_cnt= &amp;amp;word_cnt;
%do i=1 %to &amp;amp;word_cnt;
   %let var&amp;amp;i = %scan(&amp;amp;vstring,&amp;amp;i);
   %let num&amp;amp;i = %scan(&amp;amp;nstring,&amp;amp;i);

   %put var&amp;amp;i= &amp;amp;&amp;amp;var&amp;amp;i;
   %put num&amp;amp;i= &amp;amp;&amp;amp;num&amp;amp;i;

%end;
%mend;
%dummy;&lt;/FONT&gt;&lt;/PRE&gt;</description>
      <pubDate>Fri, 03 Aug 2018 15:51:15 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Odd-use-of-STR-at-execution-time-new/m-p/483835#M125533</guid>
      <dc:creator>ballardw</dc:creator>
      <dc:date>2018-08-03T15:51:15Z</dc:date>
    </item>
    <item>
      <title>Re: Odd use of %STR() at execution time_new</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Odd-use-of-STR-at-execution-time-new/m-p/484250#M125704</link>
      <description>&lt;P&gt;There is some strange interaction between using %SYSFUNC() in a complex statement inside of a macro and your delimiters.&lt;/P&gt;
&lt;P&gt;For example this code works fine outside of a macro.&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data _null_;
  call symputx('string','a,123;b,321;c,456;d,789;e,888');
run;
%let string=%superq(string);

%put &amp;amp;=string;
%put Nwords = %sysfunc(countw(&amp;amp;string,%str(;)));&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;Or even inside a macro:&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data _null_;
  call symputx('string','a,123;b,321;c,456;d,789;e,888');
run;

%macro test;
%let string=%superq(string);

%put &amp;amp;=string;
%put Nwords = %sysfunc(countw(&amp;amp;string,%str(;)));
%mend test;
%test;&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;But try to use that SYSFUNC() call in a %DO statement and it bombs.&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;%macro test;
%local i;
%let string=%superq(string);
%do i=1 %to %sysfunc(countw(&amp;amp;string,%str(;)));
  %put &amp;amp;=i ;
%end;
%mend test;
%test;&lt;/CODE&gt;&lt;/PRE&gt;
&lt;PRE&gt;1655  %test;
ERROR: Expected close parenthesis after macro function invocation not found.
NOTE: One or more missing close parentheses have been supplied for the %COUNTW function.
ERROR: Expected close parenthesis after macro function invocation not found.
ERROR: %EVAL function has no expression to evaluate, or %IF statement has no condition.
ERROR: The %TO value of the %DO I loop is invalid.
ERROR: The macro TEST will stop executing.&lt;/PRE&gt;
&lt;P&gt;But if you just assign the count to a macro variable all is well again.&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;%macro test;
%local i n;
%let string=%superq(string);
%let n= %sysfunc(countw(&amp;amp;string,%str(;)));
%do i=1 %to &amp;amp;n;
  %put &amp;amp;=i ;
%end;
%mend test;
%test;&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;And it works fine&lt;/P&gt;
&lt;PRE&gt;1664  %test;
I=1
I=2
I=3
I=4
I=5&lt;/PRE&gt;
&lt;P&gt;You have other problems with your macro.&amp;nbsp;&lt;/P&gt;
&lt;P&gt;You are including quotes in the arguments to the %SCAN() function which is going to cause issues. the %SCAN() function treats all of the characters you give it as delimiters.&amp;nbsp; So if your string includes quotes and you tell %scan() that the delimiters are quote, semi-colon (and redundantly quote again) then you might not parse the string properly.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;The logic of it seems strange. Why are you making a series of macro variables? Why not just use the value as you derive it?&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;%macro test;
  %local i n word dataset_key dataset_name ;
  %let string=%superq(string);
  %let n= %sysfunc(countw(&amp;amp;string,%str(;)));
  %do i = 1 %to &amp;amp;n;
    %let word=%qscan(&amp;amp;string,&amp;amp;i,%str(;));
    %let dataset_key = %scan(&amp;amp;word,1,%str(,));
    %let dataset_name = %scan(&amp;amp;word,2,%str(,));
    %put &amp;amp;=i &amp;amp;=word &amp;amp;=dataset_key &amp;amp;=dataset_name ;
  %end;
%mend ;&lt;/CODE&gt;&lt;/PRE&gt;
&lt;PRE&gt;1731  data _null_;
1732    call symputx('string','a,123;b,321;c,456;d,789;e,888');
1733  run;

1734  %test;
I=1 WORD=a,123 DATASET_KEY=a DATASET_NAME=123
I=2 WORD=b,321 DATASET_KEY=b DATASET_NAME=321
I=3 WORD=c,456 DATASET_KEY=c DATASET_NAME=456
I=4 WORD=d,789 DATASET_KEY=d DATASET_NAME=789
I=5 WORD=e,888 DATASET_KEY=e DATASET_NAME=888&lt;/PRE&gt;</description>
      <pubDate>Mon, 06 Aug 2018 04:02:43 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Odd-use-of-STR-at-execution-time-new/m-p/484250#M125704</guid>
      <dc:creator>Tom</dc:creator>
      <dc:date>2018-08-06T04:02:43Z</dc:date>
    </item>
    <item>
      <title>Re: Odd use of %STR() at execution time_new</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Odd-use-of-STR-at-execution-time-new/m-p/484290#M125729</link>
      <description>&lt;P&gt;Thanks a ton it works for me.&lt;/P&gt;</description>
      <pubDate>Mon, 06 Aug 2018 07:59:22 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Odd-use-of-STR-at-execution-time-new/m-p/484290#M125729</guid>
      <dc:creator>ankitk321</dc:creator>
      <dc:date>2018-08-06T07:59:22Z</dc:date>
    </item>
    <item>
      <title>Re: Odd use of %STR() at execution time_new</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Odd-use-of-STR-at-execution-time-new/m-p/484401#M125763</link>
      <description>&lt;P&gt;I like &lt;a href="https://communities.sas.com/t5/user/viewprofilepage/user-id/159"&gt;@Tom&lt;/a&gt;'s solution to the problem &lt;EM&gt;&lt;STRONG&gt;as you presented it&lt;/STRONG&gt;&lt;/EM&gt;.&amp;nbsp; His response is a nice demonstration of the usefulness of the SUPERQ macro function.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;But why use a semi-colon as a group delimiter in the first place?&amp;nbsp; Yes, you can make two lists as &lt;a href="https://communities.sas.com/t5/user/viewprofilepage/user-id/13884"&gt;@ballardw&lt;/a&gt;&amp;nbsp;suggested, but you could also chose a delimiter like !, as in&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp; %let string = a,123!b,321!c,456!d,789!e,888;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;This would allow you to drop the %STR usage, and the rest of your code logic would need no changes except for specifying ! as the group delimiter.&amp;nbsp; Just choose a delimiter that you know will not be part of the string value, and does not need masking by %STR.&lt;/P&gt;</description>
      <pubDate>Mon, 06 Aug 2018 14:58:53 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Odd-use-of-STR-at-execution-time-new/m-p/484401#M125763</guid>
      <dc:creator>mkeintz</dc:creator>
      <dc:date>2018-08-06T14:58:53Z</dc:date>
    </item>
  </channel>
</rss>

