<?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 Do not export dataset with 0 obs? in SAS Programming</title>
    <link>https://communities.sas.com/t5/SAS-Programming/Do-not-export-dataset-with-0-obs/m-p/26372#M4689</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Probably a little export macro would be the best approach.&amp;nbsp; Something like this perhaps:&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;PRE&gt;%macro ExportMe(DSN,path=C:\MyFiles);
%local Libname Memname nlobs;
%let DSN=%QUPCASE(&amp;amp;DSN);
%let Libname=%qscan(&amp;amp;DSN,1,.);
%let Memname=%qscan(&amp;amp;DSN,2,.);
proc sql noprint;
select nlobs into :nlobs
&amp;nbsp; from dictionary.tables
&amp;nbsp; where libname="&amp;amp;libname" and memname="&amp;amp;memname"
;
quit;
%if &amp;amp;nlobs=0 %then %do;
&amp;nbsp;&amp;nbsp; %PUT NOTE: &amp;amp;DSN had zero observations;
&amp;nbsp;&amp;nbsp; %return;
%end;
PROC EXPORT DATA=&amp;amp;DSN 
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; OUTFILE= "&amp;amp;Path\&amp;amp;Memname..xls" 
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; DBMS=EXCEL REPLACE;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; SHEET="&amp;amp;Memname"; 
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; NEWFILE=YES;
RUN;
%mend;

&lt;/PRE&gt;&lt;P&gt; You would then export your data sets using macro calls something like this: &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;PRE&gt;%ExportMe(SASHELP.CLASS);
&lt;/PRE&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;If there are zero observations, you just get a note in the log&amp;nbsp; Otherwise the data set is exported to an excel file of the same name as the dataset.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Mon, 09 Jan 2012 16:51:08 GMT</pubDate>
    <dc:creator>SASJedi</dc:creator>
    <dc:date>2012-01-09T16:51:08Z</dc:date>
    <item>
      <title>Do not export dataset with 0 obs?</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Do-not-export-dataset-with-0-obs/m-p/26371#M4688</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Good morning all,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I have a bunch of code which creates and exports datasets from a larger data collection system.&amp;nbsp; Sometimes these datasets contain zero observations.&amp;nbsp; At this point it is easiest to allow the whole program to run and create all of the datasets...&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Is there a way to have proc export NOT export any datasets with zero obs?&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;GST&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Mon, 09 Jan 2012 15:57:09 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Do-not-export-dataset-with-0-obs/m-p/26371#M4688</guid>
      <dc:creator>gstullo</dc:creator>
      <dc:date>2012-01-09T15:57:09Z</dc:date>
    </item>
    <item>
      <title>Do not export dataset with 0 obs?</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Do-not-export-dataset-with-0-obs/m-p/26372#M4689</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Probably a little export macro would be the best approach.&amp;nbsp; Something like this perhaps:&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;PRE&gt;%macro ExportMe(DSN,path=C:\MyFiles);
%local Libname Memname nlobs;
%let DSN=%QUPCASE(&amp;amp;DSN);
%let Libname=%qscan(&amp;amp;DSN,1,.);
%let Memname=%qscan(&amp;amp;DSN,2,.);
proc sql noprint;
select nlobs into :nlobs
&amp;nbsp; from dictionary.tables
&amp;nbsp; where libname="&amp;amp;libname" and memname="&amp;amp;memname"
;
quit;
%if &amp;amp;nlobs=0 %then %do;
&amp;nbsp;&amp;nbsp; %PUT NOTE: &amp;amp;DSN had zero observations;
&amp;nbsp;&amp;nbsp; %return;
%end;
PROC EXPORT DATA=&amp;amp;DSN 
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; OUTFILE= "&amp;amp;Path\&amp;amp;Memname..xls" 
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; DBMS=EXCEL REPLACE;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; SHEET="&amp;amp;Memname"; 
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; NEWFILE=YES;
RUN;
%mend;

&lt;/PRE&gt;&lt;P&gt; You would then export your data sets using macro calls something like this: &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;PRE&gt;%ExportMe(SASHELP.CLASS);
&lt;/PRE&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;If there are zero observations, you just get a note in the log&amp;nbsp; Otherwise the data set is exported to an excel file of the same name as the dataset.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Mon, 09 Jan 2012 16:51:08 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Do-not-export-dataset-with-0-obs/m-p/26372#M4689</guid>
      <dc:creator>SASJedi</dc:creator>
      <dc:date>2012-01-09T16:51:08Z</dc:date>
    </item>
    <item>
      <title>Re: Do not export dataset with 0 obs?</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Do-not-export-dataset-with-0-obs/m-p/26373#M4690</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I created a macro for you.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;/* create sample datasets, dsn4 with 0 observation */&lt;/P&gt;&lt;P&gt;data dsn1 dsn2 dsn3;&lt;/P&gt;&lt;P&gt;do a=1 to 3;&lt;/P&gt;&lt;P&gt;output;&lt;/P&gt;&lt;P&gt;end;&lt;/P&gt;&lt;P&gt;run;&lt;/P&gt;&lt;P&gt;proc sql;&lt;/P&gt;&lt;P&gt;&amp;nbsp; create table dsn4 like dsn3;&lt;/P&gt;&lt;P&gt;quit;&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;%macro export(lib,path);&lt;/P&gt;&lt;P&gt;proc sql noprint;&lt;/P&gt;&lt;P&gt;&amp;nbsp; select memname into: dnames separated by ' '&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; from dictionary.tables &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; where libname=%upcase("&amp;amp;lib");&lt;/P&gt;&lt;P&gt;quit; &lt;/P&gt;&lt;P&gt;&amp;nbsp; %do i=1 %to %sysfunc(countw(&amp;amp;dnames));&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; %let dsn=%scan(&amp;amp;dnames,&amp;amp;i);&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; %put &amp;amp;dsn;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;%let dsid&amp;nbsp; = %sysfunc(open(&amp;amp;dsn));&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/P&gt;&lt;P&gt;%let origN = %sysfunc(attrn(&amp;amp;dsid, nobs));&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/P&gt;&lt;P&gt;%let rc&amp;nbsp;&amp;nbsp;&amp;nbsp; = %sysfunc(close(&amp;amp;dsid));&lt;/P&gt;&lt;P&gt;%if &amp;amp;orign&amp;gt; 0 %then %do;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; PROC EXPORT DATA=&amp;amp;lib..&amp;amp;DSN &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; OUTFILE= "&amp;amp;path\&amp;amp;dsn..xls" &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; DBMS=EXCEL REPLACE;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; SHEET="&amp;amp;dsn"; &lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; NEWFILE=YES;&lt;/P&gt;&lt;P&gt;RUN; &lt;/P&gt;&lt;P&gt;%end; %end;&lt;/P&gt;&lt;P&gt;%mend; &lt;/P&gt;&lt;P&gt;%export(work,c:\temp)&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Linlin&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Tue, 10 Jan 2012 00:28:32 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Do-not-export-dataset-with-0-obs/m-p/26373#M4690</guid>
      <dc:creator>Linlin</dc:creator>
      <dc:date>2012-01-10T00:28:32Z</dc:date>
    </item>
    <item>
      <title>Re: Do not export dataset with 0 obs?</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Do-not-export-dataset-with-0-obs/m-p/26374#M4691</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;you can query dictionary table to find which table has 0 obs.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;PRE&gt;libname x v9 'c:\';
proc sql ;
 select memname from dictionary.tables where libname='X' and nobs ne 0;
 select memname into : a1 - : a&amp;amp;sqlobs. from dictionary.tables where libname='X' and nobs ne 0;
quit;
%put _user_;


%macro csv;
%do i=1 %to &amp;amp;sqlobs ;
 proc export data=x.&amp;amp;&amp;amp;a&amp;amp;i outfile="%sysfunc(pathname(x))&amp;amp;&amp;amp;a&amp;amp;i...csv " dbms=csv replace;run;
%end;
%mend csv;

%csv

&lt;/PRE&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;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Ksharp&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Tue, 10 Jan 2012 05:54:09 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Do-not-export-dataset-with-0-obs/m-p/26374#M4691</guid>
      <dc:creator>Ksharp</dc:creator>
      <dc:date>2012-01-10T05:54:09Z</dc:date>
    </item>
  </channel>
</rss>

