<?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: Macrowise variables in datastep in SAS Programming</title>
    <link>https://communities.sas.com/t5/SAS-Programming/Macrowise-variables-in-datastep/m-p/267744#M52946</link>
    <description>&lt;BLOCKQUOTE&gt;&lt;HR /&gt;&lt;a href="https://communities.sas.com/t5/user/viewprofilepage/user-id/83456"&gt;@piddy&lt;/a&gt; wrote:&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;As a side kick as a new beginner to SQL programming are there any books / websites you would recommend?&lt;HR /&gt;&lt;/BLOCKQUOTE&gt;
&lt;P&gt;If you mean &lt;EM&gt;PROC&lt;/EM&gt; SQL (that's the only flavor of SQL I use):&lt;/P&gt;
&lt;P&gt;I started with (a similar&amp;nbsp;version of) the article &lt;A href="http://www2.sas.com/proceedings/forum2008/185-2008.pdf" target="_blank"&gt;PROC SQL for DATA Step Die-hards&lt;/A&gt;&amp;nbsp;by Christianna S. Williams and continued with the book &lt;A href="http://www.sas.com/store/books/categories/examples/proc-sql-by-example-using-sql-within-sas-/prodBK_60500_en.html" target="_blank"&gt;PROC SQL by Example&lt;/A&gt;&amp;nbsp;by Howard Schreier and some other articles I came across on the web over the years. Of course, this forum has also a lot of interesting posts about PROC SQL, but a systematic approach like in the resources I mentioned is more useful at the beginning.&lt;/P&gt;</description>
    <pubDate>Mon, 02 May 2016 22:23:22 GMT</pubDate>
    <dc:creator>FreelanceReinh</dc:creator>
    <dc:date>2016-05-02T22:23:22Z</dc:date>
    <item>
      <title>Macrowise variables in datastep</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Macrowise-variables-in-datastep/m-p/267696#M52928</link>
      <description>&lt;P&gt;Hi everybody&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;The code below is running as it should, it just fills up a lot of space &lt;span class="lia-unicode-emoji" title=":slightly_smiling_face:"&gt;🙂&lt;/span&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;I have 4 variables in which I use&amp;nbsp;the function&amp;nbsp;prxchange to make certain expression similar on all observations and for the 4 variables&lt;/P&gt;&lt;P&gt;and then in the end use the CATX function to rearrange the final variables as I want them to be.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;I would like to just write the code once, and not writing it&amp;nbsp;4 times because of the&amp;nbsp;4 variables. I hope someone can help me with that.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Thanks in advance.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P align="left"&gt;&lt;FONT color="#999900" size="2"&gt;%let&lt;/FONT&gt;&lt;FONT size="2"&gt; kø =NEW_QUEUE; &lt;/FONT&gt;&lt;FONT color="#999900" size="2"&gt;%put&lt;/FONT&gt; &lt;FONT color="#000080" size="2"&gt;&amp;amp;kø&lt;/FONT&gt;&lt;FONT size="2"&gt;;&lt;/FONT&gt;&lt;/P&gt;&lt;P align="left"&gt;&lt;FONT color="#999900" size="2"&gt;&lt;FONT color="#999900" size="2"&gt;%let&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size="2"&gt; koe =QUEUE; &lt;/FONT&gt;&lt;FONT color="#999900" size="2"&gt;&lt;FONT color="#999900" size="2"&gt;%put&lt;/FONT&gt;&lt;/FONT&gt; &lt;FONT color="#000080" size="2"&gt;&lt;FONT color="#000080" size="2"&gt;&amp;amp;koe&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size="2"&gt;;&lt;/FONT&gt;&lt;/P&gt;&lt;P align="left"&gt;&lt;FONT color="#999900" size="2"&gt;&lt;FONT color="#999900" size="2"&gt;%let&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size="2"&gt; trin =SAGSTRIN; &lt;/FONT&gt;&lt;FONT color="#999900" size="2"&gt;&lt;FONT color="#999900" size="2"&gt;%put&lt;/FONT&gt;&lt;/FONT&gt; &lt;FONT color="#000080" size="2"&gt;&lt;FONT color="#000080" size="2"&gt;&amp;amp;trin&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size="2"&gt;;&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT color="#999900" size="2"&gt;&lt;FONT color="#999900" size="2"&gt;%let&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size="2"&gt; strin =SAGSTRINNAVN; &lt;/FONT&gt;&lt;FONT color="#999900" size="2"&gt;&lt;FONT color="#999900" size="2"&gt;%put&lt;/FONT&gt;&lt;/FONT&gt; &lt;FONT color="#000080" size="2"&gt;&lt;FONT color="#000080" size="2"&gt;&amp;amp;strin&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size="2"&gt;;&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;FONT color="#0000e6" size="2"&gt;&lt;STRONG&gt;data&lt;/STRONG&gt;&lt;/FONT&gt; &lt;FONT color="#000080" size="2"&gt;&amp;amp;navn&lt;/FONT&gt;&lt;/P&gt;&lt;P align="left"&gt;&lt;FONT size="2"&gt;(drop= &lt;/FONT&gt;&lt;FONT color="#000080" size="2"&gt;&lt;FONT color="#000080" size="2"&gt;&amp;amp;kø&lt;/FONT&gt;&lt;/FONT&gt; &lt;FONT color="#000080" size="2"&gt;&lt;FONT color="#000080" size="2"&gt;&amp;amp;kø.&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size="2"&gt;_2 &lt;/FONT&gt;&lt;FONT color="#000080" size="2"&gt;&lt;FONT color="#000080" size="2"&gt;&amp;amp;kø.&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size="2"&gt;_3 &lt;/FONT&gt;&lt;FONT color="#000080" size="2"&gt;&lt;FONT color="#000080" size="2"&gt;&amp;amp;kø.&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size="2"&gt;_4 XREF_clean1 &lt;/FONT&gt;&lt;/P&gt;&lt;P align="left"&gt;&lt;FONT color="#000080" size="2"&gt;&lt;FONT color="#000080" size="2"&gt;&amp;amp;koe&lt;/FONT&gt;&lt;/FONT&gt; &lt;FONT color="#000080" size="2"&gt;&lt;FONT color="#000080" size="2"&gt;&amp;amp;koe.&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size="2"&gt;_2 &lt;/FONT&gt;&lt;FONT color="#000080" size="2"&gt;&lt;FONT color="#000080" size="2"&gt;&amp;amp;koe.&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size="2"&gt;_3 &lt;/FONT&gt;&lt;FONT color="#000080" size="2"&gt;&lt;FONT color="#000080" size="2"&gt;&amp;amp;koe.&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size="2"&gt;_4 XREF_clean2&lt;/FONT&gt;&lt;/P&gt;&lt;P align="left"&gt;&lt;FONT color="#000080" size="2"&gt;&lt;FONT color="#000080" size="2"&gt;&amp;amp;trin&lt;/FONT&gt;&lt;/FONT&gt; &lt;FONT color="#000080" size="2"&gt;&lt;FONT color="#000080" size="2"&gt;&amp;amp;trin.&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size="2"&gt;_2 &lt;/FONT&gt;&lt;FONT color="#000080" size="2"&gt;&lt;FONT color="#000080" size="2"&gt;&amp;amp;trin.&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size="2"&gt;_3 &lt;/FONT&gt;&lt;FONT color="#000080" size="2"&gt;&lt;FONT color="#000080" size="2"&gt;&amp;amp;trin.&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size="2"&gt;_4 XREF_clean3&lt;/FONT&gt;&lt;/P&gt;&lt;P align="left"&gt;&lt;FONT color="#000080" size="2"&gt;&lt;FONT color="#000080" size="2"&gt;&amp;amp;strin&lt;/FONT&gt;&lt;/FONT&gt; &lt;FONT color="#000080" size="2"&gt;&lt;FONT color="#000080" size="2"&gt;&amp;amp;strin.&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size="2"&gt;_2 &lt;/FONT&gt;&lt;FONT color="#000080" size="2"&gt;&lt;FONT color="#000080" size="2"&gt;&amp;amp;strin.&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size="2"&gt;_3 XREF_clean4&lt;/FONT&gt;&lt;/P&gt;&lt;P align="left"&gt;&lt;FONT size="2"&gt;rename =(&lt;/FONT&gt;&lt;FONT color="#000080" size="2"&gt;&lt;FONT color="#000080" size="2"&gt;&amp;amp;kø.&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size="2"&gt;_5=NEW_QUEUE &lt;/FONT&gt;&lt;FONT color="#000080" size="2"&gt;&lt;FONT color="#000080" size="2"&gt;&amp;amp;koe.&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size="2"&gt;_5=QUEUE &lt;/FONT&gt;&lt;FONT color="#000080" size="2"&gt;&lt;FONT color="#000080" size="2"&gt;&amp;amp;trin.&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size="2"&gt;_5=SAGSTRIN &lt;/FONT&gt;&lt;FONT color="#000080" size="2"&gt;&lt;FONT color="#000080" size="2"&gt;&amp;amp;strin.&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size="2"&gt;_4=SAGSTRINNAVN Ansvarlig=Ini);&lt;/FONT&gt;&lt;/P&gt;&lt;P align="left"&gt;&amp;nbsp;&lt;/P&gt;&lt;P align="left"&gt;&lt;FONT color="#0000e6" size="2"&gt;&lt;FONT color="#0000e6" size="2"&gt;set&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size="2"&gt; wfstat.sagstider (keep=&lt;/FONT&gt;&lt;FONT color="#000080" size="2"&gt;&lt;FONT color="#000080" size="2"&gt;&amp;amp;varliste&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size="2"&gt;);&lt;/FONT&gt;&lt;/P&gt;&lt;P align="left"&gt;&lt;FONT color="#0000e6" size="2"&gt;&lt;FONT color="#0000e6" size="2"&gt;length&lt;/FONT&gt;&lt;/FONT&gt; &lt;FONT color="#000080" size="2"&gt;&lt;FONT color="#000080" size="2"&gt;&amp;amp;kø&lt;/FONT&gt;&lt;/FONT&gt; &lt;FONT color="#000080" size="2"&gt;&lt;FONT color="#000080" size="2"&gt;&amp;amp;kø.&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size="2"&gt;_2 &lt;/FONT&gt;&lt;FONT color="#000080" size="2"&gt;&lt;FONT color="#000080" size="2"&gt;&amp;amp;kø.&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size="2"&gt;_3 &lt;/FONT&gt;&lt;FONT color="#000080" size="2"&gt;&lt;FONT color="#000080" size="2"&gt;&amp;amp;kø.&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size="2"&gt;_4 &lt;/FONT&gt;&lt;FONT color="#000080" size="2"&gt;&lt;FONT color="#000080" size="2"&gt;&amp;amp;kø.&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size="2"&gt;_5 &lt;/FONT&gt;&lt;/P&gt;&lt;P align="left"&gt;&lt;FONT color="#000080" size="2"&gt;&lt;FONT color="#000080" size="2"&gt;&amp;amp;koe&lt;/FONT&gt;&lt;/FONT&gt; &lt;FONT color="#000080" size="2"&gt;&lt;FONT color="#000080" size="2"&gt;&amp;amp;koe.&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size="2"&gt;_2 &lt;/FONT&gt;&lt;FONT color="#000080" size="2"&gt;&lt;FONT color="#000080" size="2"&gt;&amp;amp;koe.&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size="2"&gt;_3 &lt;/FONT&gt;&lt;FONT color="#000080" size="2"&gt;&lt;FONT color="#000080" size="2"&gt;&amp;amp;koe.&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size="2"&gt;_4 &lt;/FONT&gt;&lt;FONT color="#000080" size="2"&gt;&lt;FONT color="#000080" size="2"&gt;&amp;amp;koe.&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size="2"&gt;_5 &lt;/FONT&gt;&lt;/P&gt;&lt;P align="left"&gt;&lt;FONT color="#000080" size="2"&gt;&lt;FONT color="#000080" size="2"&gt;&amp;amp;trin&lt;/FONT&gt;&lt;/FONT&gt; &lt;FONT color="#000080" size="2"&gt;&lt;FONT color="#000080" size="2"&gt;&amp;amp;trin.&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size="2"&gt;_2 &lt;/FONT&gt;&lt;FONT color="#000080" size="2"&gt;&lt;FONT color="#000080" size="2"&gt;&amp;amp;trin.&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size="2"&gt;_3 &lt;/FONT&gt;&lt;FONT color="#000080" size="2"&gt;&lt;FONT color="#000080" size="2"&gt;&amp;amp;trin.&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size="2"&gt;_4 &lt;/FONT&gt;&lt;FONT color="#000080" size="2"&gt;&lt;FONT color="#000080" size="2"&gt;&amp;amp;trin.&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size="2"&gt;_5&lt;/FONT&gt;&lt;/P&gt;&lt;P align="left"&gt;&lt;FONT color="#000080" size="2"&gt;&lt;FONT color="#000080" size="2"&gt;&amp;amp;strin&lt;/FONT&gt;&lt;/FONT&gt; &lt;FONT color="#000080" size="2"&gt;&lt;FONT color="#000080" size="2"&gt;&amp;amp;strin.&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size="2"&gt;_2 &lt;/FONT&gt;&lt;FONT color="#000080" size="2"&gt;&lt;FONT color="#000080" size="2"&gt;&amp;amp;strin.&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size="2"&gt;_3 &lt;/FONT&gt;&lt;FONT color="#000080" size="2"&gt;&lt;FONT color="#000080" size="2"&gt;&amp;amp;strin.&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size="2"&gt;_4 $ &lt;/FONT&gt;&lt;FONT color="#800080" size="2"&gt;&lt;FONT color="#800080" size="2"&gt;60&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size="2"&gt;; &lt;/FONT&gt;&lt;/P&gt;&lt;P align="left"&gt;start_date =datepart(trin_start);&lt;/P&gt;&lt;P align="left"&gt;slut_date =datepart(wf_slut);&lt;/P&gt;&lt;P align="left"&gt;Md_afslut =month(slut_date);&lt;/P&gt;&lt;P align="left"&gt;Year&amp;nbsp;=year(slut_date);&lt;/P&gt;&lt;P align="left"&gt;&amp;nbsp;&lt;/P&gt;&lt;P align="left"&gt;*Changing&amp;nbsp;XREF step (NEW_QUEUE), so it's the same for all oberservations;&lt;/P&gt;&lt;P align="left"&gt;&lt;FONT color="#000080" size="2"&gt;&lt;FONT color="#000080" size="2"&gt;&amp;amp;kø.&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size="2"&gt;_2 = left(prxchange(&lt;/FONT&gt;&lt;FONT color="#800080" size="2"&gt;&lt;FONT color="#800080" size="2"&gt;'s/X-REF|NY XRF|Ny X-Ref|Ny XRef|X-ref|NXR|Ny XR/XREF/oi'&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size="2"&gt;,-&lt;/FONT&gt;&lt;FONT color="#800080" size="2"&gt;&lt;FONT color="#800080" size="2"&gt;1&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size="2"&gt;,trim(upcase(&lt;/FONT&gt;&lt;FONT color="#000080" size="2"&gt;&lt;FONT color="#000080" size="2"&gt;&amp;amp;kø&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size="2"&gt;))));&lt;/FONT&gt;&lt;/P&gt;&lt;P align="left"&gt;&lt;FONT color="#000080" size="2"&gt;&lt;FONT color="#000080" size="2"&gt;&amp;amp;kø.&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size="2"&gt;_3 = left(prxchange(&lt;/FONT&gt;&lt;FONT color="#800080" size="2"&gt;&lt;FONT color="#800080" size="2"&gt;'s/[(]|[)]/ /i'&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size="2"&gt;,-&lt;/FONT&gt;&lt;FONT color="#800080" size="2"&gt;&lt;FONT color="#800080" size="2"&gt;1&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size="2"&gt;,trim(upcase(&lt;/FONT&gt;&lt;FONT color="#000080" size="2"&gt;&lt;FONT color="#000080" size="2"&gt;&amp;amp;kø.&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size="2"&gt;_2))));&lt;/FONT&gt;&lt;/P&gt;&lt;P align="left"&gt;&lt;FONT color="#0000e6" size="2"&gt;&lt;FONT color="#0000e6" size="2"&gt;if&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size="2"&gt; prxmatch(&lt;/FONT&gt;&lt;FONT color="#800080" size="2"&gt;&lt;FONT color="#800080" size="2"&gt;"m/XREF/oi"&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size="2"&gt;,&lt;/FONT&gt;&lt;FONT color="#000080" size="2"&gt;&lt;FONT color="#000080" size="2"&gt;&amp;amp;kø.&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size="2"&gt;_3) &lt;/FONT&gt;&lt;FONT color="#0000e6" size="2"&gt;&lt;FONT color="#0000e6" size="2"&gt;then&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size="2"&gt; XREF_clean1=&lt;/FONT&gt;&lt;FONT color="#800080" size="2"&gt;&lt;FONT color="#800080" size="2"&gt;"XREF"&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size="2"&gt;;&lt;/FONT&gt;&lt;/P&gt;&lt;P align="left"&gt;&lt;FONT color="#000080" size="2"&gt;&lt;FONT color="#000080" size="2"&gt;&amp;amp;kø.&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size="2"&gt;_4 = left(prxchange(&lt;/FONT&gt;&lt;FONT color="#800080" size="2"&gt;&lt;FONT color="#800080" size="2"&gt;'s/XREF//i'&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size="2"&gt;,-&lt;/FONT&gt;&lt;FONT color="#800080" size="2"&gt;&lt;FONT color="#800080" size="2"&gt;1&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size="2"&gt;,trim(upcase(&lt;/FONT&gt;&lt;FONT color="#000080" size="2"&gt;&lt;FONT color="#000080" size="2"&gt;&amp;amp;kø.&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size="2"&gt;_3))));&lt;/FONT&gt;&lt;/P&gt;&lt;P align="left"&gt;&lt;FONT color="#000080" size="2"&gt;&lt;FONT color="#000080" size="2"&gt;&amp;amp;kø.&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size="2"&gt;_5 = CATX(&lt;/FONT&gt;&lt;FONT color="#800080" size="2"&gt;&lt;FONT color="#800080" size="2"&gt;" - "&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size="2"&gt;,XREF_clean1,propcase(&lt;/FONT&gt;&lt;FONT color="#000080" size="2"&gt;&lt;FONT color="#000080" size="2"&gt;&amp;amp;kø.&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size="2"&gt;_4));&lt;/FONT&gt;&lt;/P&gt;&lt;P align="left"&gt;&amp;nbsp;&lt;/P&gt;&lt;P align="left"&gt;&lt;FONT size="2"&gt;*Changing&amp;nbsp;XREF step (QUEUE), so it's the same for all oberservations;&lt;/FONT&gt;&lt;/P&gt;&lt;P align="left"&gt;&lt;FONT color="#000080" size="2"&gt;&lt;FONT color="#000080" size="2"&gt;&amp;amp;koe.&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size="2"&gt;_2 = left(prxchange(&lt;/FONT&gt;&lt;FONT color="#800080" size="2"&gt;&lt;FONT color="#800080" size="2"&gt;'s/X-REF|NY XRF|Ny X-Ref|Ny XRef|X-ref|NXR|Ny XR/XREF/oi'&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size="2"&gt;,-&lt;/FONT&gt;&lt;FONT color="#800080" size="2"&gt;&lt;FONT color="#800080" size="2"&gt;1&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size="2"&gt;,trim(upcase(&lt;/FONT&gt;&lt;FONT color="#000080" size="2"&gt;&lt;FONT color="#000080" size="2"&gt;&amp;amp;koe&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size="2"&gt;))));&lt;/FONT&gt;&lt;/P&gt;&lt;P align="left"&gt;&lt;FONT color="#000080" size="2"&gt;&lt;FONT color="#000080" size="2"&gt;&amp;amp;koe.&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size="2"&gt;_3 = left(prxchange(&lt;/FONT&gt;&lt;FONT color="#800080" size="2"&gt;&lt;FONT color="#800080" size="2"&gt;'s/[(]|[)]/ /i'&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size="2"&gt;,-&lt;/FONT&gt;&lt;FONT color="#800080" size="2"&gt;&lt;FONT color="#800080" size="2"&gt;1&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size="2"&gt;,trim(upcase(&lt;/FONT&gt;&lt;FONT color="#000080" size="2"&gt;&lt;FONT color="#000080" size="2"&gt;&amp;amp;koe.&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size="2"&gt;_2))));&lt;/FONT&gt;&lt;/P&gt;&lt;P align="left"&gt;&lt;FONT color="#0000e6" size="2"&gt;&lt;FONT color="#0000e6" size="2"&gt;if&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size="2"&gt; prxmatch(&lt;/FONT&gt;&lt;FONT color="#800080" size="2"&gt;&lt;FONT color="#800080" size="2"&gt;"m/XREF/oi"&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size="2"&gt;,&lt;/FONT&gt;&lt;FONT color="#000080" size="2"&gt;&lt;FONT color="#000080" size="2"&gt;&amp;amp;koe.&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size="2"&gt;_3) &lt;/FONT&gt;&lt;FONT color="#0000e6" size="2"&gt;&lt;FONT color="#0000e6" size="2"&gt;then&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size="2"&gt; XREF_clean2=&lt;/FONT&gt;&lt;FONT color="#800080" size="2"&gt;&lt;FONT color="#800080" size="2"&gt;"XREF"&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size="2"&gt;;&lt;/FONT&gt;&lt;/P&gt;&lt;P align="left"&gt;&lt;FONT color="#000080" size="2"&gt;&lt;FONT color="#000080" size="2"&gt;&amp;amp;koe.&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size="2"&gt;_4 = left(prxchange(&lt;/FONT&gt;&lt;FONT color="#800080" size="2"&gt;&lt;FONT color="#800080" size="2"&gt;'s/XREF//i'&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size="2"&gt;,-&lt;/FONT&gt;&lt;FONT color="#800080" size="2"&gt;&lt;FONT color="#800080" size="2"&gt;1&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size="2"&gt;,trim(upcase(&lt;/FONT&gt;&lt;FONT color="#000080" size="2"&gt;&lt;FONT color="#000080" size="2"&gt;&amp;amp;koe.&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size="2"&gt;_3))));&lt;/FONT&gt;&lt;/P&gt;&lt;P align="left"&gt;&lt;FONT color="#000080" size="2"&gt;&lt;FONT color="#000080" size="2"&gt;&amp;amp;koe.&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size="2"&gt;_5 = CATX(&lt;/FONT&gt;&lt;FONT color="#800080" size="2"&gt;&lt;FONT color="#800080" size="2"&gt;" - "&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size="2"&gt;,XREF_clean2,propcase(&lt;/FONT&gt;&lt;FONT color="#000080" size="2"&gt;&lt;FONT color="#000080" size="2"&gt;&amp;amp;koe.&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size="2"&gt;_4));&lt;/FONT&gt;&lt;/P&gt;&lt;P align="left"&gt;&amp;nbsp;&lt;/P&gt;&lt;P align="left"&gt;&lt;FONT size="2"&gt;*Changing&amp;nbsp;XREF step (SAGSTRIN), so it's the same for all oberservationst;&lt;/FONT&gt;&lt;/P&gt;&lt;P align="left"&gt;&lt;FONT color="#000080" size="2"&gt;&lt;FONT color="#000080" size="2"&gt;&amp;amp;trin.&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size="2"&gt;_2 = left(prxchange(&lt;/FONT&gt;&lt;FONT color="#800080" size="2"&gt;&lt;FONT color="#800080" size="2"&gt;'s/X-REF|NY XRF|Ny X-Ref|Ny XRef|X-ref|NXR|Ny XR/XREF/oi'&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size="2"&gt;,-&lt;/FONT&gt;&lt;FONT color="#800080" size="2"&gt;&lt;FONT color="#800080" size="2"&gt;1&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size="2"&gt;,trim(upcase(&lt;/FONT&gt;&lt;FONT color="#000080" size="2"&gt;&lt;FONT color="#000080" size="2"&gt;&amp;amp;trin&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size="2"&gt;))));&lt;/FONT&gt;&lt;/P&gt;&lt;P align="left"&gt;&lt;FONT color="#000080" size="2"&gt;&lt;FONT color="#000080" size="2"&gt;&amp;amp;trin.&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size="2"&gt;_3 = left(prxchange(&lt;/FONT&gt;&lt;FONT color="#800080" size="2"&gt;&lt;FONT color="#800080" size="2"&gt;'s/[(]|[)]/ /i'&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size="2"&gt;,-&lt;/FONT&gt;&lt;FONT color="#800080" size="2"&gt;&lt;FONT color="#800080" size="2"&gt;1&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size="2"&gt;,trim(upcase(&lt;/FONT&gt;&lt;FONT color="#000080" size="2"&gt;&lt;FONT color="#000080" size="2"&gt;&amp;amp;trin.&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size="2"&gt;_2))));&lt;/FONT&gt;&lt;/P&gt;&lt;P align="left"&gt;&lt;FONT color="#0000e6" size="2"&gt;&lt;FONT color="#0000e6" size="2"&gt;if&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size="2"&gt; prxmatch(&lt;/FONT&gt;&lt;FONT color="#800080" size="2"&gt;&lt;FONT color="#800080" size="2"&gt;"m/XREF/oi"&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size="2"&gt;,&lt;/FONT&gt;&lt;FONT color="#000080" size="2"&gt;&lt;FONT color="#000080" size="2"&gt;&amp;amp;trin.&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size="2"&gt;_3) &lt;/FONT&gt;&lt;FONT color="#0000e6" size="2"&gt;&lt;FONT color="#0000e6" size="2"&gt;then&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size="2"&gt; XREF_clean3=&lt;/FONT&gt;&lt;FONT color="#800080" size="2"&gt;&lt;FONT color="#800080" size="2"&gt;"XREF"&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size="2"&gt;;&lt;/FONT&gt;&lt;/P&gt;&lt;P align="left"&gt;&lt;FONT color="#000080" size="2"&gt;&lt;FONT color="#000080" size="2"&gt;&amp;amp;trin.&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size="2"&gt;_4 = left(prxchange(&lt;/FONT&gt;&lt;FONT color="#800080" size="2"&gt;&lt;FONT color="#800080" size="2"&gt;'s/XREF//i'&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size="2"&gt;,-&lt;/FONT&gt;&lt;FONT color="#800080" size="2"&gt;&lt;FONT color="#800080" size="2"&gt;1&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size="2"&gt;,trim(upcase(&lt;/FONT&gt;&lt;FONT color="#000080" size="2"&gt;&lt;FONT color="#000080" size="2"&gt;&amp;amp;trin.&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size="2"&gt;_3))));&lt;/FONT&gt;&lt;/P&gt;&lt;P align="left"&gt;&lt;FONT color="#000080" size="2"&gt;&lt;FONT color="#000080" size="2"&gt;&amp;amp;trin.&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size="2"&gt;_5 = CATX(&lt;/FONT&gt;&lt;FONT color="#800080" size="2"&gt;&lt;FONT color="#800080" size="2"&gt;" - "&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size="2"&gt;,XREF_clean3,propcase(&lt;/FONT&gt;&lt;FONT color="#000080" size="2"&gt;&lt;FONT color="#000080" size="2"&gt;&amp;amp;trin.&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size="2"&gt;_4));&lt;/FONT&gt;&lt;/P&gt;&lt;P align="left"&gt;&amp;nbsp;&lt;/P&gt;&lt;P align="left"&gt;&lt;FONT size="2"&gt;*Changing&amp;nbsp;XREF step (SAGSTRINNAVN), so it's the same for all oberservations;&lt;/FONT&gt;&lt;/P&gt;&lt;P align="left"&gt;&lt;FONT color="#000080" size="2"&gt;&lt;FONT color="#000080" size="2"&gt;&amp;amp;strin.&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size="2"&gt;_2 = left(prxchange(&lt;/FONT&gt;&lt;FONT color="#800080" size="2"&gt;&lt;FONT color="#800080" size="2"&gt;'s/X-REF|NY XRF|Ny X-Ref|Ny XRef|X-ref|NXR|Ny XR/XREF/oi'&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size="2"&gt;,-&lt;/FONT&gt;&lt;FONT color="#800080" size="2"&gt;&lt;FONT color="#800080" size="2"&gt;1&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size="2"&gt;,trim(upcase(&lt;/FONT&gt;&lt;FONT color="#000080" size="2"&gt;&lt;FONT color="#000080" size="2"&gt;&amp;amp;strin&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size="2"&gt;))));&lt;/FONT&gt;&lt;/P&gt;&lt;P align="left"&gt;&lt;FONT color="#0000e6" size="2"&gt;&lt;FONT color="#0000e6" size="2"&gt;if&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size="2"&gt; prxmatch(&lt;/FONT&gt;&lt;FONT color="#800080" size="2"&gt;&lt;FONT color="#800080" size="2"&gt;"m/XREF/oi"&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size="2"&gt;,&lt;/FONT&gt;&lt;FONT color="#000080" size="2"&gt;&lt;FONT color="#000080" size="2"&gt;&amp;amp;strin.&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size="2"&gt;_2) &lt;/FONT&gt;&lt;FONT color="#0000e6" size="2"&gt;&lt;FONT color="#0000e6" size="2"&gt;then&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size="2"&gt; XREF_clean4=&lt;/FONT&gt;&lt;FONT color="#800080" size="2"&gt;&lt;FONT color="#800080" size="2"&gt;"XREF"&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size="2"&gt;;&lt;/FONT&gt;&lt;/P&gt;&lt;P align="left"&gt;&lt;FONT color="#000080" size="2"&gt;&lt;FONT color="#000080" size="2"&gt;&amp;amp;strin.&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size="2"&gt;_3 = left(prxchange(&lt;/FONT&gt;&lt;FONT color="#800080" size="2"&gt;&lt;FONT color="#800080" size="2"&gt;'s/XREF//i'&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size="2"&gt;,-&lt;/FONT&gt;&lt;FONT color="#800080" size="2"&gt;&lt;FONT color="#800080" size="2"&gt;1&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size="2"&gt;,trim(upcase(&lt;/FONT&gt;&lt;FONT color="#000080" size="2"&gt;&lt;FONT color="#000080" size="2"&gt;&amp;amp;strin.&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size="2"&gt;_2))));&lt;/FONT&gt;&lt;/P&gt;&lt;P align="left"&gt;&lt;FONT color="#000080" size="2"&gt;&lt;FONT color="#000080" size="2"&gt;&amp;amp;strin.&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size="2"&gt;_4 = CATX(&lt;/FONT&gt;&lt;FONT color="#800080" size="2"&gt;&lt;FONT color="#800080" size="2"&gt;" - "&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size="2"&gt;,XREF_clean4,propcase(&lt;/FONT&gt;&lt;FONT color="#000080" size="2"&gt;&lt;FONT color="#000080" size="2"&gt;&amp;amp;strin.&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size="2"&gt;_3));&lt;/FONT&gt;&lt;/P&gt;&lt;P align="left"&gt;&lt;FONT color="#0000e6" size="2"&gt;&lt;FONT color="#0000e6" size="2"&gt;format&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size="2"&gt; start_date slut_date &lt;/FONT&gt;&lt;FONT color="#008080" size="2"&gt;&lt;FONT color="#008080" size="2"&gt;date9.&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size="2"&gt;;&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT color="#0000e6" size="2"&gt;&lt;FONT color="#0000e6" size="2"&gt;&lt;STRONG&gt;run&lt;/STRONG&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size="2"&gt;;&lt;/FONT&gt;&lt;/P&gt;</description>
      <pubDate>Mon, 02 May 2016 18:19:23 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Macrowise-variables-in-datastep/m-p/267696#M52928</guid>
      <dc:creator>piddy</dc:creator>
      <dc:date>2016-05-02T18:19:23Z</dc:date>
    </item>
    <item>
      <title>Re: Macrowise variables in datastep</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Macrowise-variables-in-datastep/m-p/267703#M52929</link>
      <description>&lt;P&gt;This isn't a solution by any means, but a suggestion.&amp;nbsp; You don't need so many variables.&amp;nbsp; Your program would be easier to work with now, and easier to turn into a macro, if you reused variable names.&amp;nbsp; For example, use _2 instead of &amp;amp;prefix._2.&amp;nbsp; Use _3 instead of &amp;amp;prefix._3.&amp;nbsp; You're only going to drop these variables anyway, so don't make up separate names for each prefix.&lt;/P&gt;</description>
      <pubDate>Mon, 02 May 2016 19:37:22 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Macrowise-variables-in-datastep/m-p/267703#M52929</guid>
      <dc:creator>Astounding</dc:creator>
      <dc:date>2016-05-02T19:37:22Z</dc:date>
    </item>
    <item>
      <title>Re: Macrowise variables in datastep</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Macrowise-variables-in-datastep/m-p/267725#M52938</link>
      <description>&lt;P&gt;Hi again,&amp;nbsp;&lt;a href="https://communities.sas.com/t5/user/viewprofilepage/user-id/83456"&gt;@piddy﻿&lt;/a&gt;,&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;To me, this looks like a good application for a user-defined CALL routine. With that you would no longer need&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;macro variables &lt;SPAN&gt;kø, koe etc.&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;SPAN&gt;the long DROP= dataset option&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;SPAN&gt;most parts of the RENAME=&amp;nbsp;dataset option&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;SPAN&gt;temporary variables in the data step (see LENGTH statement)&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;SPAN&gt;long repetitive code&lt;/SPAN&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;&lt;SPAN&gt;So, your code would be much shorter, easier to understand and easier to maintain. Moreover, you could separate the code for the definition of the CALL routine from the code where the routine is applied and you could reuse the CALL routine in other programs&amp;nbsp;(if this makes sense).&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;Here is a simple example: a CALL routine that removes digits and, optionally, parentheses from the contents of a character variable:&lt;/SPAN&gt;&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;/* Define CALL routine CLEANSTR */

proc fcmp outlib=work.funcs.test;
subroutine cleanstr(c $, m $);  /* c: character variable to be "cleaned"     */
  outargs c;                    /* m: modifier to trigger optional features, */
                                /*    here: removal of parentheses           */
  c2=prxchange('s/\d//o',-1,c);
  if upcase(m)='P' then c2=prxchange('s/\(|\)//o',-1,c2);
  c=c2;
endsub;
quit;

options cmplib=work.funcs; /* make it available */

/* Create test data */

data have;
var1='1ABC(29)';
var2='x(1)-y(2)';
run;

/* Apply the new CALL routine */

data want;
set have;
call cleanstr(var1,'');
call cleanstr(var2,'p');
proc print;
run;&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;&lt;SPAN&gt;I think, with the &lt;A href="http://support.sas.com/documentation/cdl/en/syntaxidx/68719/HTML/default/index.htm#/documentation/cdl/en/proc/68954/HTML/default/p10b4qouzgi6sqn154ipglazix2q.htm#n1hhggf16cakagn1cu1ijp9609iy" target="_blank"&gt;documentation&lt;/A&gt; you should be able to adapt this example to your needs. Please feel free to get back to us if you encounter any problems.&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Mon, 02 May 2016 21:03:12 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Macrowise-variables-in-datastep/m-p/267725#M52938</guid>
      <dc:creator>FreelanceReinh</dc:creator>
      <dc:date>2016-05-02T21:03:12Z</dc:date>
    </item>
    <item>
      <title>Re: Macrowise variables in datastep</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Macrowise-variables-in-datastep/m-p/267736#M52943</link>
      <description>That's quite clever. &lt;span class="lia-unicode-emoji" title=":grinning_face:"&gt;😀&lt;/span&gt; Will use that. Have a deadline soon but will incoporate that later. Thank you a lot.&lt;BR /&gt;&lt;BR /&gt;As a side kick as a new beginner to SQL programming are there any books / websites you would recommend?</description>
      <pubDate>Mon, 02 May 2016 21:35:51 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Macrowise-variables-in-datastep/m-p/267736#M52943</guid>
      <dc:creator>piddy</dc:creator>
      <dc:date>2016-05-02T21:35:51Z</dc:date>
    </item>
    <item>
      <title>Re: Macrowise variables in datastep</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Macrowise-variables-in-datastep/m-p/267744#M52946</link>
      <description>&lt;BLOCKQUOTE&gt;&lt;HR /&gt;&lt;a href="https://communities.sas.com/t5/user/viewprofilepage/user-id/83456"&gt;@piddy&lt;/a&gt; wrote:&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;As a side kick as a new beginner to SQL programming are there any books / websites you would recommend?&lt;HR /&gt;&lt;/BLOCKQUOTE&gt;
&lt;P&gt;If you mean &lt;EM&gt;PROC&lt;/EM&gt; SQL (that's the only flavor of SQL I use):&lt;/P&gt;
&lt;P&gt;I started with (a similar&amp;nbsp;version of) the article &lt;A href="http://www2.sas.com/proceedings/forum2008/185-2008.pdf" target="_blank"&gt;PROC SQL for DATA Step Die-hards&lt;/A&gt;&amp;nbsp;by Christianna S. Williams and continued with the book &lt;A href="http://www.sas.com/store/books/categories/examples/proc-sql-by-example-using-sql-within-sas-/prodBK_60500_en.html" target="_blank"&gt;PROC SQL by Example&lt;/A&gt;&amp;nbsp;by Howard Schreier and some other articles I came across on the web over the years. Of course, this forum has also a lot of interesting posts about PROC SQL, but a systematic approach like in the resources I mentioned is more useful at the beginning.&lt;/P&gt;</description>
      <pubDate>Mon, 02 May 2016 22:23:22 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Macrowise-variables-in-datastep/m-p/267744#M52946</guid>
      <dc:creator>FreelanceReinh</dc:creator>
      <dc:date>2016-05-02T22:23:22Z</dc:date>
    </item>
  </channel>
</rss>

