<?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 do I stop SAS from adding an extra empty byte to every string variable when I use PROC EXPORT? in SAS Procedures</title>
    <link>https://communities.sas.com/t5/SAS-Procedures/How-do-I-stop-SAS-from-adding-an-extra-empty-byte-to-every/m-p/202780#M50607</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;You should raise this with SAS support.&amp;nbsp; It looks to be part of the design of how PROC EXPORT converts strings for STATA.&amp;nbsp; There might be differences in how STATA stores strings that could make the extra space necessary to prevent data loss for all strings. &lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Thu, 11 Jun 2015 10:41:29 GMT</pubDate>
    <dc:creator>Tom</dc:creator>
    <dc:date>2015-06-11T10:41:29Z</dc:date>
    <item>
      <title>How do I stop SAS from adding an extra empty byte to every string variable when I use PROC EXPORT?</title>
      <link>https://communities.sas.com/t5/SAS-Procedures/How-do-I-stop-SAS-from-adding-an-extra-empty-byte-to-every/m-p/202778#M50605</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;TABLE&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD&gt;&lt;P&gt;When I export a dataset to Stata format using `PROC EXPORT`, SAS 9.4 automatically expands adds an extra (empty) byte to every observation of every string variable. For example, in this data set:&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; data test1;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; input cust_id&amp;nbsp;&amp;nbsp; $ 1&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; month&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 3-8&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; category&amp;nbsp; $ 10-12 &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; status&amp;nbsp;&amp;nbsp;&amp;nbsp; $ 14-14&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; datalines;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; A 200003 ABC C&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; A 200004 DEF C&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; A 200006 XYZ 3&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; B 199910 ASD X&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; B 199912 ASD C&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; quit;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; proc export data = test1&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; file = "test1.dta"&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; dbms = stata replace;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; quit;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;the variables `cust_id`, `category`, and `status` should be `str1`, `str3`, and `str1` in the final Stata file, and thus take up 1 byte, 3 bytes, and 1 byte, respectively, for every observation. However, SAS automatically adds an extra empty byte to each observation, which expands their data types to `str2`, `str4`, and `str2` data type in the outputted Stata file. &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;This is extremely problematic because that's an extra byte added to *every* observation of *every* string variable. For large datasets (I have some with ~530 million observations and numerous string variables), this can add several gigabytes to the exported file.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Once the file is loaded into Stata, the `compress` command in Stata can automatically remove these empty bytes and shrink the file, but for large datasets, `PROC EXPORT` adds so many extra bytes to the file that I don't always have enough memory to load the dataset into Stata in the first place. &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Is there a way to stop SAS from padding the string variables in the first place? When I export a file with a one character string variable (for example), I want that variable stored as a one character string variable in the output file. &lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;/TD&gt;&lt;TD&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;/TD&gt;&lt;TD&gt;&lt;/TD&gt;&lt;TD&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;/TD&gt;&lt;TD&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;/TD&gt;&lt;TD&gt;&lt;/TD&gt;&lt;TD&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;/TD&gt;&lt;TD&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;/TD&gt;&lt;TD&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;/TD&gt;&lt;TD&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;/TD&gt;&lt;TD&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;/TD&gt;&lt;TD&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;/TD&gt;&lt;TD&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;/TD&gt;&lt;TD&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;/TD&gt;&lt;TD&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;/TD&gt;&lt;TD&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 10 Jun 2015 21:33:38 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Procedures/How-do-I-stop-SAS-from-adding-an-extra-empty-byte-to-every/m-p/202778#M50605</guid>
      <dc:creator>fortranso</dc:creator>
      <dc:date>2015-06-10T21:33:38Z</dc:date>
    </item>
    <item>
      <title>Re: How do I stop SAS from adding an extra empty byte to every string variable when I use PROC EXPORT?</title>
      <link>https://communities.sas.com/t5/SAS-Procedures/How-do-I-stop-SAS-from-adding-an-extra-empty-byte-to-every/m-p/202779#M50606</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Have you tried writing a delimited file in SAS and import with "import delimited"?&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 11 Jun 2015 07:14:21 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Procedures/How-do-I-stop-SAS-from-adding-an-extra-empty-byte-to-every/m-p/202779#M50606</guid>
      <dc:creator>Kurt_Bremser</dc:creator>
      <dc:date>2015-06-11T07:14:21Z</dc:date>
    </item>
    <item>
      <title>Re: How do I stop SAS from adding an extra empty byte to every string variable when I use PROC EXPORT?</title>
      <link>https://communities.sas.com/t5/SAS-Procedures/How-do-I-stop-SAS-from-adding-an-extra-empty-byte-to-every/m-p/202780#M50607</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;You should raise this with SAS support.&amp;nbsp; It looks to be part of the design of how PROC EXPORT converts strings for STATA.&amp;nbsp; There might be differences in how STATA stores strings that could make the extra space necessary to prevent data loss for all strings. &lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 11 Jun 2015 10:41:29 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Procedures/How-do-I-stop-SAS-from-adding-an-extra-empty-byte-to-every/m-p/202780#M50607</guid>
      <dc:creator>Tom</dc:creator>
      <dc:date>2015-06-11T10:41:29Z</dc:date>
    </item>
  </channel>
</rss>

