<?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: Real-time updating macro variable inside data step (regular expression) in SAS Programming</title>
    <link>https://communities.sas.com/t5/SAS-Programming/Real-time-updating-macro-variable-inside-data-step-regular/m-p/215763#M39810</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;And an alternate approach that will only work for US.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;data _null_;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; length searchstr $ 300;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; searchstr = 'The string has AL and MA state abbreviations in it MP';&lt;BR /&gt;&amp;nbsp;&amp;nbsp; array stateabr[59] $2 _temporary_ ('AL' 'AK' 'AZ' 'AR' 'CA' 'CO' 'CT' 'DE' 'FL' 'GA' 'HI' 'ID' 'IL' 'IN' 'IA' 'KS' 'KY' 'LA' 'ME' 'MD' 'MA' 'MI' 'MN' 'MS' &lt;BR /&gt;&amp;nbsp; 'MO' 'MT' 'NE' 'NV' 'NH' 'NJ' 'NM' 'NY' 'NC' 'ND' 'OH' 'OK' 'OR' 'PA' 'RI' 'SC' 'SD' 'TN' 'TX' 'UT' 'VT' 'VA' 'WA' 'WV' 'WI' 'WY' 'AS' 'DC' 'FM' &lt;BR /&gt;&amp;nbsp; 'GU' 'MH' 'MP' 'PW' 'PR' 'VI');&lt;BR /&gt;&amp;nbsp; do i = 1 to dim(stateabr);&lt;BR /&gt;&amp;nbsp;&amp;nbsp; pos = findw(searchstr,stateabr&lt;I&gt;);&lt;BR /&gt;&amp;nbsp;&amp;nbsp; if pos&amp;gt;0 then do;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; searchstr=catx(' ',substr(searchstr,1,(pos-1)),strip(stnamel(stateabr&lt;I&gt;)),substr(searchstr,(pos+3)));&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; put searchstr; /* this is to see each change as it happens for example*/&lt;BR /&gt;&amp;nbsp;&amp;nbsp; end;&lt;BR /&gt;&amp;nbsp; end;&lt;BR /&gt;&amp;nbsp; &lt;/I&gt;&lt;/I&gt;&lt;/P&gt;&lt;P&gt;run;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Fri, 15 May 2015 22:27:03 GMT</pubDate>
    <dc:creator>ballardw</dc:creator>
    <dc:date>2015-05-15T22:27:03Z</dc:date>
    <item>
      <title>Real-time updating macro variable inside data step (regular expression)</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Real-time-updating-macro-variable-inside-data-step-regular/m-p/215760#M39807</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;I'm trying to replace state abbreviations with state names in a free-text variable that often lists multiple states.&amp;nbsp; &lt;SPAN style="font-size: 13.3333330154419px;"&gt;TRANWRD works pretty well using arrays (see below) but in the example shown Alabama becomes &lt;SPAN style="font-size: 13.3333330154419px;"&gt;AlabaMassachusetts.&amp;nbsp; I was trying to use a regular expression to isolate abbreviations but they don't seem to take SAS variable values in the replacements.&amp;nbsp; I also tried several ways to assign each abbreviation and state name to macro variables to use in the regular expression without success.&amp;nbsp; I'd like to know:&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 13.3333330154419px;"&gt;1.&amp;nbsp; What alternative method can I use to accomplish this task?&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 13.3333330154419px;"&gt;2.&amp;nbsp; Even if another method is easier, I'd like to know how to update macro variables in real-time or some other method that can be used to enter text real-time into a regular expression.&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I tried communities and google but couldn't find what I was looking for.&amp;nbsp; Any input is appreciated.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Thanks.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;data StateNames;&lt;/P&gt;&lt;P&gt;length states $300;&lt;/P&gt;&lt;P&gt;input states &amp;amp; $;&lt;/P&gt;&lt;P&gt;datalines;&lt;/P&gt;&lt;P&gt;CO(1), CT(1), FL(2), Alabama(1), MA(5), NJ(4), NY(2), PA(2), TX(1)&lt;/P&gt;&lt;P&gt;;&lt;/P&gt;&lt;P&gt;run;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;data StateNames2;&lt;/P&gt;&lt;P&gt;&amp;nbsp; set StateNames;&lt;/P&gt;&lt;P&gt;&amp;nbsp; keep States_original States;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; States_original=States;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; array stateabr[59] $2 abr1-abr59 ('AL' 'AK' 'AZ' 'AR' 'CA' 'CO' 'CT' 'DE' 'FL' 'GA' 'HI' 'ID' 'IL' 'IN' 'IA' 'KS' 'KY' 'LA' 'ME' 'MD' 'MA' 'MI' 'MN' 'MS' &lt;/P&gt;&lt;P&gt;&amp;nbsp; 'MO' 'MT' 'NE' 'NV' 'NH' 'NJ' 'NM' 'NY' 'NC' 'ND' 'OH' 'OK' 'OR' 'PA' 'RI' 'SC' 'SD' 'TN' 'TX' 'UT' 'VT' 'VA' 'WA' 'WV' 'WI' 'WY' 'AS' 'DC' 'FM' &lt;/P&gt;&lt;P&gt;&amp;nbsp; 'GU' 'MH' 'MP' 'PW' 'PR' 'VI');&lt;/P&gt;&lt;P&gt;&amp;nbsp; array statenms[59] $50 nms1-nms59 ('Alabama' 'Alaska' 'Arizona' 'Arkansas' 'California' 'Colorado' 'Connecticut' 'Delaware' 'Florida' 'Georgia' 'Hawaii' &lt;/P&gt;&lt;P&gt;&amp;nbsp; 'Idaho' 'Illinois' 'Indiana' 'Iowa' 'Kansas' 'Kentucky' 'Louisiana' 'Maine' 'Maryland' 'Massachusetts' 'Michigan' 'Minnesota' 'Mississippi' &lt;/P&gt;&lt;P&gt;&amp;nbsp; 'Missouri' 'Montana' 'Nebraska' 'Nevada' 'New Hampshire' 'New Jersey' 'New Mexico' 'New York' 'North Carolina' 'North Dakota' 'Ohio' 'Oklahoma' &lt;/P&gt;&lt;P&gt;&amp;nbsp; 'Oregon' 'Pennsylvania' 'Rhode Island' 'South Carolina' 'South Dakota' 'Tennessee' 'Texas' 'Utah' 'Vermont' 'Virginia' 'Washington' 'West Virginia' &lt;/P&gt;&lt;P&gt;&amp;nbsp; 'Wisconsin' 'Wyoming' 'American Samoa' 'Washington DC' 'Federated States of Micronesia' 'Guam' 'Republic of the Marshall Islands' &lt;/P&gt;&lt;P&gt;&amp;nbsp; 'Commonwealth of the Northern Mariana Islands' 'Republic of Palau' 'Puerto Rico' 'US Virgin Islands');&lt;/P&gt;&lt;P&gt;&amp;nbsp; do i=1 to 59;&lt;/P&gt;&lt;P&gt;&amp;nbsp; /* Method 1 - Alabama becomes AlabaMassachusetts */&lt;/P&gt;&lt;P&gt;/* States=TRANWRD(States,stateabr{i},strip(statenms{i}));*/&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; /* Method 2 - No change to SAS variable values dont work in regular expressions? */&lt;/P&gt;&lt;P&gt;&amp;nbsp; abrev_re=prxparse("s/[^a-z]stateabr{i}[^a-z]/statenms{i}/i");&lt;/P&gt;&lt;P&gt;&amp;nbsp; call prxchange(abrev_re,-1,States);&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; /* Method 3 - Use a real-time updating macro variable (How?) */&lt;/P&gt;&lt;P&gt;/* CALL SYMPUT('MACRO_stateabr', stateabr{i}) ;*/&lt;/P&gt;&lt;P&gt;/* CALL SYMPUT('MACRO_statenms', statenms{i}) ;*/&lt;/P&gt;&lt;P&gt;/* abrev_re=prxparse("s/(?&amp;lt;=[^a-z])&amp;amp;MACRO_stateabr.(?=[^a-z])/&amp;amp;MACRO_statenms./i");*/&lt;/P&gt;&lt;P&gt;/* call prxchange(abrev_re,-1,States);*/&lt;/P&gt;&lt;P&gt;&amp;nbsp; end;&lt;/P&gt;&lt;P&gt;run;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;proc print data=StateNames2 noobs; run;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Fri, 15 May 2015 20:28:40 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Real-time-updating-macro-variable-inside-data-step-regular/m-p/215760#M39807</guid>
      <dc:creator>Ryanb2</dc:creator>
      <dc:date>2015-05-15T20:28:40Z</dc:date>
    </item>
    <item>
      <title>Re: Real-time updating macro variable inside data step (regular expression)</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Real-time-updating-macro-variable-inside-data-step-regular/m-p/215761#M39808</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;PRX does the job. Note the use of precompiled patterns and the word boundary metacharacter (\b).&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;data StateNames;&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;length states $300;&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;input states &amp;amp; $;&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;datalines;&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;CO(1), CT(1), FL(2), Alabama(1), MA(5), NJ(4), NY(2), PA(2), TX(1)&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;; &lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt; data StateNames2;&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;set StateNames;&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;keep States_original States;&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;States_original=States;&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;array stateabr[59] $2 abr1-abr59 ('AL' 'AK' 'AZ' 'AR' 'CA' 'CO' 'CT' 'DE' 'FL' 'GA' 'HI' 'ID' 'IL' 'IN' 'IA' 'KS' 'KY' 'LA' 'ME' 'MD' 'MA' 'MI' 'MN' 'MS'&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;'MO' 'MT' 'NE' 'NV' 'NH' 'NJ' 'NM' 'NY' 'NC' 'ND' 'OH' 'OK' 'OR' 'PA' 'RI' 'SC' 'SD' 'TN' 'TX' 'UT' 'VT' 'VA' 'WA' 'WV' 'WI' 'WY' 'AS' 'DC' 'FM'&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;'GU' 'MH' 'MP' 'PW' 'PR' 'VI');&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;array statenms[59] $50 nms1-nms59 ('Alabama' 'Alaska' 'Arizona' 'Arkansas' 'California' 'Colorado' 'Connecticut' 'Delaware' 'Florida' 'Georgia' 'Hawaii'&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;'Idaho' 'Illinois' 'Indiana' 'Iowa' 'Kansas' 'Kentucky' 'Louisiana' 'Maine' 'Maryland' 'Massachusetts' 'Michigan' 'Minnesota' 'Mississippi'&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;'Missouri' 'Montana' 'Nebraska' 'Nevada' 'New Hampshire' 'New Jersey' 'New Mexico' 'New York' 'North Carolina' 'North Dakota' 'Ohio' 'Oklahoma'&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;'Oregon' 'Pennsylvania' 'Rhode Island' 'South Carolina' 'South Dakota' 'Tennessee' 'Texas' 'Utah' 'Vermont' 'Virginia' 'Washington' 'West Virginia'&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;'Wisconsin' 'Wyoming' 'American Samoa' 'Washington DC' 'Federated States of Micronesia' 'Guam' 'Republic of the Marshall Islands'&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;'Commonwealth of the Northern Mariana Islands' 'Republic of Palau' 'Puerto Rico' 'US Virgin Islands');&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;array prxId{59} _temporary_;&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;if not prxId{1} then&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; do i=1 to dim(prxId);&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; prxId{i} = prxparse(cats("s/\b",stateAbr{i},"\b/",stateNms{i},"/i"));&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; end;&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;do i = 1 to dim(prxId);&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; call prxchange(prxId{i},-1,States);&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; end;&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;run;&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; &lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;proc print data=StateNames2 noobs; run;&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;PG&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Fri, 15 May 2015 22:13:13 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Real-time-updating-macro-variable-inside-data-step-regular/m-p/215761#M39808</guid>
      <dc:creator>PGStats</dc:creator>
      <dc:date>2015-05-15T22:13:13Z</dc:date>
    </item>
    <item>
      <title>Re: Real-time updating macro variable inside data step (regular expression)</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Real-time-updating-macro-variable-inside-data-step-regular/m-p/215762#M39809</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Very clever!&amp;nbsp; Thanks for your help PGStats.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Fri, 15 May 2015 22:19:58 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Real-time-updating-macro-variable-inside-data-step-regular/m-p/215762#M39809</guid>
      <dc:creator>Ryanb2</dc:creator>
      <dc:date>2015-05-15T22:19:58Z</dc:date>
    </item>
    <item>
      <title>Re: Real-time updating macro variable inside data step (regular expression)</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Real-time-updating-macro-variable-inside-data-step-regular/m-p/215763#M39810</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;And an alternate approach that will only work for US.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;data _null_;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; length searchstr $ 300;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; searchstr = 'The string has AL and MA state abbreviations in it MP';&lt;BR /&gt;&amp;nbsp;&amp;nbsp; array stateabr[59] $2 _temporary_ ('AL' 'AK' 'AZ' 'AR' 'CA' 'CO' 'CT' 'DE' 'FL' 'GA' 'HI' 'ID' 'IL' 'IN' 'IA' 'KS' 'KY' 'LA' 'ME' 'MD' 'MA' 'MI' 'MN' 'MS' &lt;BR /&gt;&amp;nbsp; 'MO' 'MT' 'NE' 'NV' 'NH' 'NJ' 'NM' 'NY' 'NC' 'ND' 'OH' 'OK' 'OR' 'PA' 'RI' 'SC' 'SD' 'TN' 'TX' 'UT' 'VT' 'VA' 'WA' 'WV' 'WI' 'WY' 'AS' 'DC' 'FM' &lt;BR /&gt;&amp;nbsp; 'GU' 'MH' 'MP' 'PW' 'PR' 'VI');&lt;BR /&gt;&amp;nbsp; do i = 1 to dim(stateabr);&lt;BR /&gt;&amp;nbsp;&amp;nbsp; pos = findw(searchstr,stateabr&lt;I&gt;);&lt;BR /&gt;&amp;nbsp;&amp;nbsp; if pos&amp;gt;0 then do;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; searchstr=catx(' ',substr(searchstr,1,(pos-1)),strip(stnamel(stateabr&lt;I&gt;)),substr(searchstr,(pos+3)));&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; put searchstr; /* this is to see each change as it happens for example*/&lt;BR /&gt;&amp;nbsp;&amp;nbsp; end;&lt;BR /&gt;&amp;nbsp; end;&lt;BR /&gt;&amp;nbsp; &lt;/I&gt;&lt;/I&gt;&lt;/P&gt;&lt;P&gt;run;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Fri, 15 May 2015 22:27:03 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Real-time-updating-macro-variable-inside-data-step-regular/m-p/215763#M39810</guid>
      <dc:creator>ballardw</dc:creator>
      <dc:date>2015-05-15T22:27:03Z</dc:date>
    </item>
    <item>
      <title>Re: Real-time updating macro variable inside data step (regular expression)</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Real-time-updating-macro-variable-inside-data-step-regular/m-p/215764#M39811</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;One note. You should consider carefully your choice of replacing state codes written in lowercase. Many state codes are also two-letter English words. It might be better to restrict the replacement of common words (IN, ME, OK, OR, AS, etc) to uppercase. &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;PG&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Sat, 16 May 2015 02:24:46 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Real-time-updating-macro-variable-inside-data-step-regular/m-p/215764#M39811</guid>
      <dc:creator>PGStats</dc:creator>
      <dc:date>2015-05-16T02:24:46Z</dc:date>
    </item>
  </channel>
</rss>

