<?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: how to reverse these command in SAS Programming</title>
    <link>https://communities.sas.com/t5/SAS-Programming/how-to-reverse-these-command/m-p/902992#M356848</link>
    <description>&lt;BLOCKQUOTE&gt;&lt;HR /&gt;&lt;a href="https://communities.sas.com/t5/user/viewprofilepage/user-id/416388"&gt;@HeatherNewton&lt;/a&gt;&amp;nbsp;wrote:&lt;BR /&gt;I cannot have the translation to and reverse running on same session. What extra do i need to reverse?&lt;HR /&gt;&lt;/BLOCKQUOTE&gt;
&lt;P&gt;Just make sure you are using the same encoding. Preferable the same SAS version.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;You might want to read the file in with the ENCODING=ANY dataset option just be sure that SAS does not transcode the values before you have a chance to run the TRANSLATE() function on them.&lt;/P&gt;</description>
    <pubDate>Tue, 14 Nov 2023 15:03:45 GMT</pubDate>
    <dc:creator>Tom</dc:creator>
    <dc:date>2023-11-14T15:03:45Z</dc:date>
    <item>
      <title>how to reverse these command</title>
      <link>https://communities.sas.com/t5/SAS-Programming/how-to-reverse-these-command/m-p/902759#M356765</link>
      <description>&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data test2;
 set cust;
 string=COLLATE(1,256);
 high4=substr(string,55);
 cust_id=translate(cust_id, high4, string);
run;&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;we did some sort of translation, can anyone let me know how I can reverse it and get cust_id back to original form ?&lt;/P&gt;</description>
      <pubDate>Mon, 13 Nov 2023 08:58:44 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/how-to-reverse-these-command/m-p/902759#M356765</guid>
      <dc:creator>HeatherNewton</dc:creator>
      <dc:date>2023-11-13T08:58:44Z</dc:date>
    </item>
    <item>
      <title>Re: how to reverse these command</title>
      <link>https://communities.sas.com/t5/SAS-Programming/how-to-reverse-these-command/m-p/902776#M356774</link>
      <description>&lt;P&gt;Translate is swapping characters, so I would think:&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt; string=COLLATE(1,256);
 high4=substr(string,55);
 cust_id=translate(cust_id, string, high4);&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;?&lt;/P&gt;</description>
      <pubDate>Mon, 13 Nov 2023 11:57:47 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/how-to-reverse-these-command/m-p/902776#M356774</guid>
      <dc:creator>Quentin</dc:creator>
      <dc:date>2023-11-13T11:57:47Z</dc:date>
    </item>
    <item>
      <title>Re: how to reverse these command</title>
      <link>https://communities.sas.com/t5/SAS-Programming/how-to-reverse-these-command/m-p/902781#M356776</link>
      <description>&lt;BLOCKQUOTE&gt;&lt;HR /&gt;&lt;a href="https://communities.sas.com/t5/user/viewprofilepage/user-id/416388"&gt;@HeatherNewton&lt;/a&gt;&amp;nbsp;wrote:&lt;BR /&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data test2;
 set cust;
 string=COLLATE(1,256);
 high4=substr(string,55);
 cust_id=translate(cust_id, high4, string);
run;&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;we did some sort of translation, can anyone let me know how I can reverse it and get cust_id back to original form ?&lt;/P&gt;
&lt;HR /&gt;&lt;/BLOCKQUOTE&gt;
&lt;P&gt;Just swap the two strings in the TRANSLATE() function call.&lt;/P&gt;
&lt;P&gt;Example:&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;1    data test;
2     cust_id='1234567890';
3     string=COLLATE(1,256);
4     high4=substr(string,55);
5     put 'BEFORE: ' cust_id $char10. +1 cust_id $hex20.;
6     cust_id=translate(cust_id, high4, string);
7     put 'AFTER : ' cust_id $char10. +1 cust_id $hex20.;
8     cust_id=translate(cust_id, string, high4);
9     put 'UNDO  : ' cust_id $char10. +1 cust_id $hex20.;
10   run;

BEFORE: 1234567890 31323334353637383930
AFTER : ghijklmnof 6768696A6B6C6D6E6F66
UNDO  : 1234567890 31323334353637383930
&lt;/PRE&gt;
&lt;P&gt;&lt;STRONG&gt;But if CUST_ID had any characters in those last 55 characters of STRING then you cannot undo the change.&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;Let's simulate that with our little 10 character test.&lt;/P&gt;
&lt;PRE&gt;1    data test;
2     cust_id='1234567890';
3     string=cust_id;
4     high4=substr(string,5);
5     put 'BEFORE: ' cust_id $char10. +1 cust_id $hex20.;
6     cust_id=translate(cust_id, high4, string);
7     put 'AFTER : ' cust_id $char10. +1 cust_id $hex20.;
8     cust_id=translate(cust_id, string, high4);
9     put 'UNDO  : ' cust_id $char10. +1 cust_id $hex20.;
10   run;

BEFORE: 1234567890 31323334353637383930
AFTER : 567890     35363738393020202020
UNDO  : 1234560000 31323334353630303030
&lt;/PRE&gt;
&lt;P&gt;So '1' is translated to '5' and '6' to '0', but '7' thru '0' are all translated to space so there is no way to tell those spaces apart.&amp;nbsp; To fix that add the skipped values back to the end of HIGH4 in the original step.&amp;nbsp; Then the translation is completely reversible.&lt;/P&gt;
&lt;PRE&gt;1    data test;
2     cust_id='1234567890';
3     string=cust_id;
4     high4=substr(string,5)||substr(string,1,4);
5     put 'BEFORE: ' cust_id $char10. +1 cust_id $hex20.;
6     cust_id=translate(cust_id, high4, string);
7     put 'AFTER : ' cust_id $char10. +1 cust_id $hex20.;
8     cust_id=translate(cust_id, string, high4);
9     put 'UNDO  : ' cust_id $char10. +1 cust_id $hex20.;
10   run;

BEFORE: 1234567890 31323334353637383930
AFTER : 5678901234 35363738393031323334
UNDO  : 1234567890 31323334353637383930
&lt;/PRE&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>Mon, 13 Nov 2023 13:07:36 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/how-to-reverse-these-command/m-p/902781#M356776</guid>
      <dc:creator>Tom</dc:creator>
      <dc:date>2023-11-13T13:07:36Z</dc:date>
    </item>
    <item>
      <title>Re: how to reverse these command</title>
      <link>https://communities.sas.com/t5/SAS-Programming/how-to-reverse-these-command/m-p/902793#M356779</link>
      <description>&lt;P&gt;IF any of the original transforms changed multiple characters to a single character, such as&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Translate (somevar,'111','abc')&lt;/P&gt;
&lt;P&gt;which would map a, b and c characters to 1 you cannot be guaranteed to recover the original.&lt;/P&gt;
&lt;PRE&gt;data example;
   longstring = 'asdqlfkjbca';
   otherstring=translate(longstring,'111','abc');
   trystring= translate(otherstring,'abc','111');
run;&lt;/PRE&gt;
&lt;P&gt;Note that all the abc translated to 1 in Otherstring become c in Trystring.&lt;/P&gt;
&lt;P&gt;So without explicit values of your translation strings I would say the general answer to the question is indeterminate.&lt;/P&gt;
&lt;P&gt;Recover from back up data.&lt;/P&gt;
&lt;P&gt;If&amp;nbsp; you replace the original data set with the modified versions then reread the data or start from a data set prior to the translate.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Additionally, if any of your original strings contained duplicate characters then it is double hard to get back as the same multiple assigned "to" characters in translate would have been ignored and grouped into a single output character.&lt;/P&gt;</description>
      <pubDate>Tue, 14 Nov 2023 15:45:13 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/how-to-reverse-these-command/m-p/902793#M356779</guid>
      <dc:creator>ballardw</dc:creator>
      <dc:date>2023-11-14T15:45:13Z</dc:date>
    </item>
    <item>
      <title>Re: how to reverse these command</title>
      <link>https://communities.sas.com/t5/SAS-Programming/how-to-reverse-these-command/m-p/902884#M356824</link>
      <description>What if cust_id contains also characters&lt;BR /&gt;E.g.&lt;BR /&gt;E4349567&lt;BR /&gt;C4127658&lt;BR /&gt;C6267260&lt;BR /&gt;E5211402 &lt;BR /&gt;K4729617&lt;BR /&gt;G6646262&lt;BR /&gt;&lt;BR /&gt;Does it work？</description>
      <pubDate>Mon, 13 Nov 2023 22:50:49 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/how-to-reverse-these-command/m-p/902884#M356824</guid>
      <dc:creator>HeatherNewton</dc:creator>
      <dc:date>2023-11-13T22:50:49Z</dc:date>
    </item>
    <item>
      <title>Re: how to reverse these command</title>
      <link>https://communities.sas.com/t5/SAS-Programming/how-to-reverse-these-command/m-p/902891#M356826</link>
      <description>&lt;P&gt;Try it.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Should work as long as none of the characters fall into the set of 54 left out of the target values for the TRANSLATE() function.&lt;/P&gt;
&lt;P&gt;Which variables are excluded depend on whether you set a length for the variable you stored COLLATE() into since SAS will default to $200 instead of $256 if the variable's wasn't defined first.&lt;/P&gt;
&lt;PRE&gt;96   data _null_;
97
98    string=collate(1,256);
99    vlen=vlength(string);
100   put vlen=;
101   end = substr(string,vlen-54);
102   put end=;
103  run;

vlen=200
end=’“”•–—˜™š›œ&amp;#157;žŸ&amp;nbsp;¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈ
NOTE: DATA statement used (Total process time):
      real time           0.00 seconds
      cpu time            0.00 seconds


104  data _null_;
105   length string $256;
106   string=collate(1,256);
107   vlen=vlength(string);
108   put vlen=;
109   end = substr(string,vlen-54);
110   put end=;
111  run;

vlen=256
end=ÊËÌÍÎÏÐÑÒÓÔÕÖ×ØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ
&lt;/PRE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Mon, 13 Nov 2023 23:54:20 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/how-to-reverse-these-command/m-p/902891#M356826</guid>
      <dc:creator>Tom</dc:creator>
      <dc:date>2023-11-13T23:54:20Z</dc:date>
    </item>
    <item>
      <title>Re: how to reverse these command</title>
      <link>https://communities.sas.com/t5/SAS-Programming/how-to-reverse-these-command/m-p/902892#M356827</link>
      <description>&lt;P&gt;&lt;a href="https://communities.sas.com/t5/user/viewprofilepage/user-id/416388"&gt;@HeatherNewton&lt;/a&gt;&amp;nbsp;You've asked the same question in two places. Repeating my answer given &lt;A href="https://communities.sas.com/t5/SAS-Programming/some-form-of-masking/m-p/874839#M345674" target="_self"&gt;here&lt;/A&gt;&amp;nbsp;with a few additions.&lt;/P&gt;
&lt;P&gt;To avoid that several different characters can get translated into a single character you need to ensure that the from and to strings in the translate function contain the same number of characters - and that they are all different. Below amendment to your code does this.&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data custinfo;
  input cust_id $8.;
  datalines;
E4349567
C4127658
C6267260
E5211402 
K4729617
G6646262
;
run;

data test1;
  set custinfo;
  length string high4 $256;
  retain string high4;
  if _n_=1 then
    do;
      string=COLLATE(0,255);
      high4=cats(substr(string,56),substr(string,1,55));
    end;
  cust_id_out_1=translate(cust_id, high4, string);
  cust_id_out_2=translate(cust_id_out_1,string,high4);
  format string $hex512. high4 $hex110. cust_id_out_1 $hex16.;
run;

proc print data=test1;
  var cust_id cust_id_out_1 cust_id_out_2;
run;&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Patrick_0-1699919846801.png" style="width: 400px;"&gt;&lt;img src="https://communities.sas.com/t5/image/serverpage/image-id/89714iBE8AAB5D8B686A47/image-size/medium?v=v2&amp;amp;px=400" role="button" title="Patrick_0-1699919846801.png" alt="Patrick_0-1699919846801.png" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Btw: If you really want to create and store a list of the first 256 characters in the collating sequence then you need to explicitly define the length for variable string as else it will default to a length of only $200 in your code.&amp;nbsp;&lt;/P&gt;
&lt;P&gt;You also need to start counting at 0 and not 1.&lt;/P&gt;
&lt;P&gt;And... if you want to ensure consistent results for running in any SAS environment then you need also to care about the&amp;nbsp;&lt;A href="https://documentation.sas.com/doc/en/pgmsascdc/v_044/nlsref/p1d7k16vtur7s4n1nbbaf8ro6sk7.htm" target="_self" rel="nofollow noopener noreferrer"&gt;Collating Sequence&lt;/A&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;and define it explicitly.&lt;/P&gt;
&lt;P&gt;I'd also consider to create a list of characters for variable string that only contains printable characters and that certainly don't contain control characters.&lt;/P&gt;</description>
      <pubDate>Mon, 13 Nov 2023 23:57:34 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/how-to-reverse-these-command/m-p/902892#M356827</guid>
      <dc:creator>Patrick</dc:creator>
      <dc:date>2023-11-13T23:57:34Z</dc:date>
    </item>
    <item>
      <title>Re: how to reverse these command</title>
      <link>https://communities.sas.com/t5/SAS-Programming/how-to-reverse-these-command/m-p/902925#M356837</link>
      <description>&lt;P&gt;if I already have cust_id_out_1 created from cust_id and I just need to turn cust_id_out_1 back into cust_id&lt;/P&gt;
&lt;P&gt;how do I put it?&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;I tried the given command starting from cust_id -e1234567 etc to cust_id_out_1 to cust_id_out_2 it worked&lt;/P&gt;
&lt;P&gt;but if I already have cust_id_out_1 and I want to get back to cust_id, the translation gives wrong answer&lt;/P&gt;
&lt;P&gt;What is missing?&lt;/P&gt;</description>
      <pubDate>Tue, 14 Nov 2023 06:59:21 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/how-to-reverse-these-command/m-p/902925#M356837</guid>
      <dc:creator>HeatherNewton</dc:creator>
      <dc:date>2023-11-14T06:59:21Z</dc:date>
    </item>
    <item>
      <title>Re: how to reverse these command</title>
      <link>https://communities.sas.com/t5/SAS-Programming/how-to-reverse-these-command/m-p/902928#M356838</link>
      <description>&lt;BLOCKQUOTE&gt;&lt;HR /&gt;&lt;a href="https://communities.sas.com/t5/user/viewprofilepage/user-id/416388"&gt;@HeatherNewton&lt;/a&gt;&amp;nbsp;wrote:&lt;BR /&gt;
&lt;P&gt;if I already have cust_id_out_1 created from cust_id and I just need to turn cust_id_out_1 back into cust_id&lt;/P&gt;
&lt;P&gt;how do I put it?&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;I tried the given command starting from cust_id -e1234567 etc to cust_id_out_1 to cust_id_out_2 it worked&lt;/P&gt;
&lt;P&gt;but if I already have cust_id_out_1 and I want to get back to cust_id, the translation gives wrong answer&lt;/P&gt;
&lt;P&gt;What is missing?&lt;/P&gt;
&lt;HR /&gt;&lt;/BLOCKQUOTE&gt;
&lt;P&gt;You need to create and populate your variables&amp;nbsp;high4 and string exactly the way as you've done it when you scrambled the source string.&lt;/P&gt;
&lt;P&gt;And as other's already stated: If this initial code that "masked" the source string at any time translated more than one clear text character to the same "masked" character then the process is not reversible. Having seen your code and if you've got only alphanumeric characters in your clear text string and assuming you're running this in the same environment, I'd assume you won't have such issues.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Tue, 14 Nov 2023 07:33:38 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/how-to-reverse-these-command/m-p/902928#M356838</guid>
      <dc:creator>Patrick</dc:creator>
      <dc:date>2023-11-14T07:33:38Z</dc:date>
    </item>
    <item>
      <title>Re: how to reverse these command</title>
      <link>https://communities.sas.com/t5/SAS-Programming/how-to-reverse-these-command/m-p/902938#M356840</link>
      <description>&lt;PRE&gt; if _n_=1 then
    do;
      string=COLLATE(0,255);
      high4=cats(substr(string,56),substr(string,1,55));
    end;&lt;/PRE&gt;
&lt;P&gt;why is this part required? also why have to minus 1 in collate paramenters?&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Tue, 14 Nov 2023 09:47:10 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/how-to-reverse-these-command/m-p/902938#M356840</guid>
      <dc:creator>HeatherNewton</dc:creator>
      <dc:date>2023-11-14T09:47:10Z</dc:date>
    </item>
    <item>
      <title>Re: how to reverse these command</title>
      <link>https://communities.sas.com/t5/SAS-Programming/how-to-reverse-these-command/m-p/902945#M356842</link>
      <description>&lt;P&gt;Bytes contain characters from 0 (binary 00000000) to 255 (binary 11111111).&lt;/P&gt;
&lt;P&gt;To build a complete ASCII collating sequence, you have to go from 0 to 255 (there is no character 256!).&lt;/P&gt;
&lt;P&gt;By attaching the first 55 characters to the end of the masking string, you make sure that any characters in the range 200 to 255 are also masked correctly. Without that, they would all be masked with blanks.&lt;/P&gt;
&lt;P&gt;Such characters (200 and above) appear in the ISO 8859 extended ASCII table.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Tue, 14 Nov 2023 10:54:39 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/how-to-reverse-these-command/m-p/902945#M356842</guid>
      <dc:creator>Kurt_Bremser</dc:creator>
      <dc:date>2023-11-14T10:54:39Z</dc:date>
    </item>
    <item>
      <title>Re: how to reverse these command</title>
      <link>https://communities.sas.com/t5/SAS-Programming/how-to-reverse-these-command/m-p/902965#M356845</link>
      <description>&lt;PRE class="language-sas"&gt;&lt;CODE&gt; string=COLLATE(1,256);
 high4=substr(string,55);
 cust_id=translate(cust_id, string, high4);&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;Actually there is really just three lines in the original code and there is no specification to length or format or data type to string or high4 and cust_id is an alphabet follow by 7 digits no of 0-9, would a one liner cust_id=translate(cust_id, high4, string) be adequate or I have to add string=collate(1,256); high4=substr((string,55); just before that one liner?&lt;BR /&gt;My converted cust_id does look more strange than what we see here sometimes longer with say a bunch of VVVVVVVVVVVVVVVVVV to end some usually about some 40 characters long..&lt;/P&gt;</description>
      <pubDate>Tue, 14 Nov 2023 13:25:24 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/how-to-reverse-these-command/m-p/902965#M356845</guid>
      <dc:creator>HeatherNewton</dc:creator>
      <dc:date>2023-11-14T13:25:24Z</dc:date>
    </item>
    <item>
      <title>Re: how to reverse these command</title>
      <link>https://communities.sas.com/t5/SAS-Programming/how-to-reverse-these-command/m-p/902970#M356846</link>
      <description>&lt;P&gt;Why not just test it?&lt;/P&gt;
&lt;P&gt;We could make a string that has digits and letters and see what it does to them and whether it can be reversed.&lt;/P&gt;
&lt;PRE&gt;1    data _null_;
2     custid1='09AZaz';
3     string=COLLATE(1,256);
4     high4=substr(string,55);
5     custid2=translate(custid1, high4,string);
6     custid3=translate(custid2, string, high4);
7     put (custid:) (=/);
8     put (custid:) (=$hex./);
9    run;


custid1=09AZaz
custid2=fow&amp;#144;—°
custid3=09AZaz
custid1=3039415A617A
custid2=666F779097B0
custid3=3039415A617A
&lt;/PRE&gt;
&lt;P&gt;So it works when running on the same SAS session.&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;But you might have trouble if you use the translated string with a different encoding.&amp;nbsp; Notice how the lowercase letters and even the uppercase Z were mapped to characters beyond the range of normal ASCII characters ('7F'x).&amp;nbsp; &amp;nbsp;A was mapped to '77'x which is a lowercase w, but Zaz was mapped to '9097B0'x, which in my encoding shows as a graphic line drawing character and degree symbol, but in this forum it looks like something else.&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Tom_0-1699970111799.png" style="width: 400px;"&gt;&lt;img src="https://communities.sas.com/t5/image/serverpage/image-id/89740iC34EDA09587A7AD8/image-size/medium?v=v2&amp;amp;px=400" role="button" title="Tom_0-1699970111799.png" alt="Tom_0-1699970111799.png" /&gt;&lt;/span&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Tom_1-1699970142761.png" style="width: 400px;"&gt;&lt;img src="https://communities.sas.com/t5/image/serverpage/image-id/89741i7DBF1525CCB35340/image-size/medium?v=v2&amp;amp;px=400" role="button" title="Tom_1-1699970142761.png" alt="Tom_1-1699970142761.png" /&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;So if the transformed characters were transcoded into some different encoding they might be mapped to some other characters.&amp;nbsp; So before trying to reverse the original logic you would need to first undo the effect of the transcoding.&lt;/P&gt;</description>
      <pubDate>Tue, 14 Nov 2023 14:01:07 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/how-to-reverse-these-command/m-p/902970#M356846</guid>
      <dc:creator>Tom</dc:creator>
      <dc:date>2023-11-14T14:01:07Z</dc:date>
    </item>
    <item>
      <title>Re: how to reverse these command</title>
      <link>https://communities.sas.com/t5/SAS-Programming/how-to-reverse-these-command/m-p/902983#M356847</link>
      <description>I cannot have the translation to and reverse running on same session. What extra do i need to reverse?</description>
      <pubDate>Tue, 14 Nov 2023 14:39:44 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/how-to-reverse-these-command/m-p/902983#M356847</guid>
      <dc:creator>HeatherNewton</dc:creator>
      <dc:date>2023-11-14T14:39:44Z</dc:date>
    </item>
    <item>
      <title>Re: how to reverse these command</title>
      <link>https://communities.sas.com/t5/SAS-Programming/how-to-reverse-these-command/m-p/902992#M356848</link>
      <description>&lt;BLOCKQUOTE&gt;&lt;HR /&gt;&lt;a href="https://communities.sas.com/t5/user/viewprofilepage/user-id/416388"&gt;@HeatherNewton&lt;/a&gt;&amp;nbsp;wrote:&lt;BR /&gt;I cannot have the translation to and reverse running on same session. What extra do i need to reverse?&lt;HR /&gt;&lt;/BLOCKQUOTE&gt;
&lt;P&gt;Just make sure you are using the same encoding. Preferable the same SAS version.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;You might want to read the file in with the ENCODING=ANY dataset option just be sure that SAS does not transcode the values before you have a chance to run the TRANSLATE() function on them.&lt;/P&gt;</description>
      <pubDate>Tue, 14 Nov 2023 15:03:45 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/how-to-reverse-these-command/m-p/902992#M356848</guid>
      <dc:creator>Tom</dc:creator>
      <dc:date>2023-11-14T15:03:45Z</dc:date>
    </item>
  </channel>
</rss>

