<?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: Concatenate with CATX in SAS Programming</title>
    <link>https://communities.sas.com/t5/SAS-Programming/Concatenate-with-CATX/m-p/336079#M272404</link>
    <description>&lt;P&gt;Thanks I really like your solution.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Do you know why after execution of this code It generates numeric values?&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data test ;
				do i=rank('a') to rank('y') by 1;
				output;
				end;
		
run;&lt;/CODE&gt;&lt;/PRE&gt;</description>
    <pubDate>Mon, 27 Feb 2017 01:03:16 GMT</pubDate>
    <dc:creator>Jcorti</dc:creator>
    <dc:date>2017-02-27T01:03:16Z</dc:date>
    <item>
      <title>Concatenate with CATX</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Concatenate-with-CATX/m-p/335948#M272397</link>
      <description>&lt;P&gt;Hi All,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Someone of you have you ever concatenate a variable from another dataset?&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;I want to concatenate char values like a., b., c. until x. &amp;nbsp;with a range previously defined (combination of r1 and r2 variables)&lt;/P&gt;&lt;P&gt;The issue that I am getting is with "r" variable that I want to concatenate with "r1" and "r2".&lt;/P&gt;&lt;P&gt;Mu dataset has 2500 observation and variable "range" has 25 ranges --That´s why I am doing this on my code because the range is repeating 100 times&lt;/P&gt;&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;do j=1 to 100;&lt;/CODE&gt;&lt;/PRE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Any suggestion on that??&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Thanks,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;%macro concat;
data testa (keep=i) ;
do j=1 to 100;
do i='a.','b.','c.','d.','e.','f.','g.','h.','i.','j.','k.','l.',
'm.','n.','o.','p.','q.','r.','s.','t.','u.','v.','w.','x.','y.';
   %let j=i;
output;
end;
end;
run;
data test (drop=r1 r2 "Range Start"n "Range End"n) ;
retain month_var Range "Current Count"n "Current %"n " Previous Count"n "Previous %"n "% Change"n ;
set output.&amp;amp;cons;
r1=put(input("Range Start"n,15.),comma12.);
r2=put("Range End"n,comma15.);
r=&amp;amp;j.
Range=CATX('_',r,r1,r2); 
run;
%mend concat;
%concat;&lt;/CODE&gt;&lt;/PRE&gt;</description>
      <pubDate>Sun, 26 Feb 2017 04:09:24 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Concatenate-with-CATX/m-p/335948#M272397</guid>
      <dc:creator>Jcorti</dc:creator>
      <dc:date>2017-02-26T04:09:24Z</dc:date>
    </item>
    <item>
      <title>Re: Concatenate with CATX</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Concatenate-with-CATX/m-p/335953#M272398</link>
      <description>&lt;P&gt;Why not extract a substring from "a._b._....x." ?&lt;/P&gt;</description>
      <pubDate>Sun, 26 Feb 2017 05:02:14 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Concatenate-with-CATX/m-p/335953#M272398</guid>
      <dc:creator>PGStats</dc:creator>
      <dc:date>2017-02-26T05:02:14Z</dc:date>
    </item>
    <item>
      <title>Re: Concatenate with CATX</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Concatenate-with-CATX/m-p/335954#M272399</link>
      <description>&lt;P&gt;What do you mean by &lt;STRONG&gt;%let j=i; &lt;/STRONG&gt;in first step ?&lt;/P&gt;
&lt;P&gt;if you add&amp;nbsp;&lt;STRONG&gt;%put J= &amp;amp;j;&lt;/STRONG&gt; after first run you'll find in log that&amp;nbsp;&lt;STRONG&gt;J=i&lt;/STRONG&gt; as a constant.&lt;/P&gt;
&lt;P&gt;did you mean: &amp;nbsp;&lt;STRONG&gt;j=i&amp;nbsp;&lt;/STRONG&gt;in order to save the sequence number or&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;call symput('j',i)&lt;/STRONG&gt; which will keep the last value of i, i.e. 100.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;the&amp;nbsp;&lt;STRONG&gt;r=&amp;amp;j&lt;/STRONG&gt; in your code result in &lt;STRONG&gt;r='i'&amp;nbsp;&lt;/STRONG&gt; or if you use call symput you will get&amp;nbsp;&lt;STRONG&gt;r=100&lt;/STRONG&gt;.&lt;/P&gt;
&lt;P&gt;I suppose you didn't mean neither of the two.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Please give an example of:&lt;/P&gt;
&lt;P&gt;r1 = 'Range Start'n = 100;&lt;/P&gt;
&lt;P&gt;r2 = 'Rabge End'n = 200;&lt;/P&gt;
&lt;P&gt;what shold be r ? what is the connection between first step and the others ?&lt;/P&gt;
&lt;P&gt;what result of catx you expect ?&lt;/P&gt;</description>
      <pubDate>Sun, 26 Feb 2017 05:05:45 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Concatenate-with-CATX/m-p/335954#M272399</guid>
      <dc:creator>Shmuel</dc:creator>
      <dc:date>2017-02-26T05:05:45Z</dc:date>
    </item>
    <item>
      <title>Re: Concatenate with CATX</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Concatenate-with-CATX/m-p/335982#M272400</link>
      <description>&lt;P&gt;What do you mean by &lt;STRONG&gt;%let j=i; &lt;/STRONG&gt;in first step ?&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;Iterates 100 times from a: to x:&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;if you add&amp;nbsp;&lt;STRONG&gt;%put J= &amp;amp;j;&lt;/STRONG&gt; after first run you'll find in log that&amp;nbsp;&lt;STRONG&gt;J=i&lt;/STRONG&gt; as a constant.&lt;/P&gt;&lt;P&gt;did you mean: &amp;nbsp;&lt;STRONG&gt;j=i&amp;nbsp;&lt;/STRONG&gt;in order to save the sequence number or&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;call symput('j',i)&lt;/STRONG&gt; which will keep the last value of i, i.e. 100.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;the&amp;nbsp;&lt;STRONG&gt;r=&amp;amp;j&lt;/STRONG&gt; in your code result in &lt;STRONG&gt;r='i'&amp;nbsp;&lt;/STRONG&gt; or if you use call symput you will get&amp;nbsp;&lt;STRONG&gt;r=100&lt;/STRONG&gt;.&lt;/P&gt;&lt;P&gt;I suppose you didn't mean neither of the two.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Please give an example of:&lt;/P&gt;&lt;P&gt;r1 = 'Range Start'n = 100;&lt;/P&gt;&lt;P&gt;r2 = 'Rabge End'n = 200;&lt;/P&gt;&lt;P&gt;what shold be r ? what is the connection between first step and the others ?&lt;/P&gt;&lt;P&gt;what result of catx you expect ?&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;This is the example using&amp;nbsp;&lt;/P&gt;&lt;P&gt;Range=CATX('_',r1,r2);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;TABLE&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD&gt;._0&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;1_100&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;101_500&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;501_1,000&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;1,001_1,500&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;1,501_2,000&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&amp;nbsp;..&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&amp;nbsp;..&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&amp;nbsp;..&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;50,000,001_100,000,000&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;This is the expected results using that I neeed&lt;/P&gt;&lt;P&gt;Range=CATX('_',r,r1,r2);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;TABLE&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD&gt;a:._0&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;b:1_100&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;c:101_500&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;d:501_1,000&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;e:1,001_1,500&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;f:1,501_2,000&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&amp;nbsp;..&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&amp;nbsp;..&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&amp;nbsp;..&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;x:50,000,001_100,000,000&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Sun, 26 Feb 2017 15:15:57 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Concatenate-with-CATX/m-p/335982#M272400</guid>
      <dc:creator>Jcorti</dc:creator>
      <dc:date>2017-02-26T15:15:57Z</dc:date>
    </item>
    <item>
      <title>Re: Concatenate with CATX</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Concatenate-with-CATX/m-p/335988#M272401</link>
      <description>&lt;P&gt;You said:&lt;/P&gt;
&lt;BLOCKQUOTE&gt;&lt;HR /&gt;&lt;a href="https://communities.sas.com/t5/user/viewprofilepage/user-id/129699"&gt;@Jcorti&lt;/a&gt; wrote:&lt;BR /&gt;
&lt;P&gt;This is the expected results using that I neeed&lt;/P&gt;
&lt;P&gt;Range=CATX('_',r,r1,r2);&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;TABLE&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TD&gt;a:._0&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;b:1_100&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;c:101_500&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;d:501_1,000&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;e:1,001_1,500&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;f:1,501_2,000&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;&amp;nbsp;..&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;&amp;nbsp;..&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;&amp;nbsp;..&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;x:50,000,001_100,000,000&lt;/TD&gt;
&lt;/TR&gt;
&lt;/TBODY&gt;
&lt;/TABLE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;HR /&gt;&lt;/BLOCKQUOTE&gt;
&lt;P&gt;You could generate that with a simple DO loop, but you need to explain the pattern better. The beginning of the pattern looks to be every 500 values. &amp;nbsp;But the last range does NOT follow that pattern.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data ranges ;
  do i=0 to 100000000 by 500 ;
     if i=0 then base=.;
     else base=i-500+1;
    letter = byte(mod(i/500,25)+rank('a')) ;
    range = catx(':',letter,(catx('_',put(base,comma20.),put(i,comma20.))));
    output;
  end;
  keep range ;
run;&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;Here are the first 4 and last 4 observations.&lt;/P&gt;
&lt;PRE&gt;283
284  data _null_;
285    set ranges nobs=nobs ;
286    if _n_ &amp;lt;= 4 or _n_ &amp;gt; nobs-4 then put range ;
287    if _n_=4 then put '...';
288  run;

a:._0
b:1_500
c:501_1,000
d:1,001_1,500
...
w:99,998,001_99,998,500
x:99,998,501_99,999,000
y:99,999,001_99,999,500
a:99,999,501_100,000,000
NOTE: There were 200001 observations read from the data set WORK.RANGES.&lt;/PRE&gt;</description>
      <pubDate>Sun, 26 Feb 2017 15:50:51 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Concatenate-with-CATX/m-p/335988#M272401</guid>
      <dc:creator>Tom</dc:creator>
      <dc:date>2017-02-26T15:50:51Z</dc:date>
    </item>
    <item>
      <title>Re: Concatenate with CATX</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Concatenate-with-CATX/m-p/336009#M272402</link>
      <description>&lt;P&gt;&lt;a href="https://communities.sas.com/t5/user/viewprofilepage/user-id/129699"&gt;@Jcorti&lt;/a&gt;, you changed definition from your first post:&lt;/P&gt;
&lt;P&gt;Instead&amp;nbsp;&lt;STRONG&gt;a. - y.&amp;nbsp;&lt;/STRONG&gt;your example of desired output is&amp;nbsp;&lt;STRONG&gt;a:. - x:.&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Anyhow, it can be done in a single data step but you may need adapt adding values according to letter:&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data want;
     retain range_from .;
     length var $25;
     do i=rank('a') to rank('y') by 1;
        if byte(i) = 'a' then do;
           var = 'a:._0'; output;
           range_from = 500;
        end; else
        if byte(i) = 'y' then do;
           var='y:.'||strip(put(range_from,comma12.))||'_1,000,000';
           output;
           leave;
        end; else do;
           var = byte(i)||':.'||strip(put(range_from,comma12.));
           range_from + 500;
           var = catx('_',var,strip(put(range_from,comma12.)));
           output;
        end;
    end;
    drop range_from i;
run;&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Sun, 26 Feb 2017 19:53:39 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Concatenate-with-CATX/m-p/336009#M272402</guid>
      <dc:creator>Shmuel</dc:creator>
      <dc:date>2017-02-26T19:53:39Z</dc:date>
    </item>
    <item>
      <title>Re: Concatenate with CATX</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Concatenate-with-CATX/m-p/336078#M272403</link>
      <description>&lt;P&gt;Thanks a lot;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;I did some adjustement to your code but finally worked.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data output.&amp;amp;cons (drop=r1 r2 "Range Start"n "Range End"n j letter) ;
retain month_var Range "Current Count"n "Current %"n " Previous Count"n "Previous %"n "% Change"n ;
do j=0 to 2499;
set output.&amp;amp;cons;
r1=put(input("Range Start"n,15.),comma12.);
r2=put("Range End"n,comma15.);
letter = byte(mod(j,25)+rank('a')) ;
Range=CATX(':',letter,(CATX('_',r1,r2)));
output;
end;&lt;/CODE&gt;&lt;/PRE&gt;&lt;P&gt;this is a sample of the variable generated after execution&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;a:._0&lt;BR /&gt;b:1_100&lt;BR /&gt;c:101_500&lt;BR /&gt;d:501_1,000&lt;BR /&gt;e:1,001_1,500&lt;BR /&gt;f:1,501_2,000&lt;BR /&gt;g:2,001_2,500&lt;BR /&gt;h:2,501_5,000&lt;BR /&gt;i:5,001_7,500&lt;BR /&gt;j:7,501_10,000&lt;BR /&gt;k:10,001_15,000&lt;BR /&gt;l:15,001_20,000&lt;BR /&gt;m:20,001_25,000&lt;BR /&gt;n:25,001_30,000&lt;BR /&gt;o:30,001_40,000&lt;BR /&gt;p:40,001_50,000&lt;BR /&gt;q:50,001_100,000&lt;BR /&gt;r:100,001_200,000&lt;BR /&gt;s:200,001_300,000&lt;BR /&gt;t:300,001_500,000&lt;BR /&gt;u:500,001_1,000,000&lt;BR /&gt;v:1,000,001_5,000,000&lt;BR /&gt;w:5,000,001_10,000,000&lt;BR /&gt;x:10,000,001_50,000,000&lt;BR /&gt;y:50,000,001_100,000,000&lt;BR /&gt;a:._0&lt;BR /&gt;b:1_100&lt;BR /&gt;c:101_500&lt;BR /&gt;d:501_1,000&lt;BR /&gt;e:1,001_1,500&lt;BR /&gt;f:1,501_2,000&lt;BR /&gt;g:2,001_2,500&lt;BR /&gt;h:2,501_5,000&lt;BR /&gt;i:5,001_7,500&lt;BR /&gt;j:7,501_10,000&lt;BR /&gt;k:10,001_15,000&lt;BR /&gt;l:15,001_20,000&lt;BR /&gt;m:20,001_25,000&lt;BR /&gt;n:25,001_30,000&lt;BR /&gt;o:30,001_40,000&lt;BR /&gt;p:40,001_50,000&lt;BR /&gt;q:50,001_100,000&lt;BR /&gt;r:100,001_200,000&lt;BR /&gt;s:200,001_300,000&lt;BR /&gt;t:300,001_500,000&lt;BR /&gt;u:500,001_1,000,000&lt;BR /&gt;v:1,000,001_5,000,000&lt;BR /&gt;w:5,000,001_10,000,000&lt;BR /&gt;x:10,000,001_50,000,000&lt;BR /&gt;y:50,000,001_100,000,000&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Thanks a lot again!!!!&lt;/P&gt;</description>
      <pubDate>Mon, 27 Feb 2017 00:54:55 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Concatenate-with-CATX/m-p/336078#M272403</guid>
      <dc:creator>Jcorti</dc:creator>
      <dc:date>2017-02-27T00:54:55Z</dc:date>
    </item>
    <item>
      <title>Re: Concatenate with CATX</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Concatenate-with-CATX/m-p/336079#M272404</link>
      <description>&lt;P&gt;Thanks I really like your solution.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Do you know why after execution of this code It generates numeric values?&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data test ;
				do i=rank('a') to rank('y') by 1;
				output;
				end;
		
run;&lt;/CODE&gt;&lt;/PRE&gt;</description>
      <pubDate>Mon, 27 Feb 2017 01:03:16 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Concatenate-with-CATX/m-p/336079#M272404</guid>
      <dc:creator>Jcorti</dc:creator>
      <dc:date>2017-02-27T01:03:16Z</dc:date>
    </item>
    <item>
      <title>Re: Concatenate with CATX</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Concatenate-with-CATX/m-p/336097#M272405</link>
      <description>&lt;BLOCKQUOTE&gt;&lt;HR /&gt;&lt;a href="https://communities.sas.com/t5/user/viewprofilepage/user-id/129699"&gt;@Jcorti&lt;/a&gt; wrote:&lt;BR /&gt;
&lt;P&gt;Thanks I really like your solution.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Do you know why after execution of this code It generates numeric values?&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data test ;
				do i=rank('a') to rank('y') by 1;
				output;
				end;
		
run;&lt;/CODE&gt;&lt;/PRE&gt;
&lt;HR /&gt;&lt;/BLOCKQUOTE&gt;
&lt;P&gt;You probably know that Latin letters, each character is one byte length and is a composition of 8 bits&lt;/P&gt;
&lt;P&gt;with numeric value between 0 to 255.&amp;nbsp;In ASCII machines the 'a' chacter is 97 and all other letters are&lt;/P&gt;
&lt;P&gt;in consequitive order up to 'z' that is 122.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;The function RANK interprets the character byte into its numeric value, while BYTE function makes the reverse.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Mon, 27 Feb 2017 05:33:58 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Concatenate-with-CATX/m-p/336097#M272405</guid>
      <dc:creator>Shmuel</dc:creator>
      <dc:date>2017-02-27T05:33:58Z</dc:date>
    </item>
  </channel>
</rss>

