https://github.com/cran/Hmisc
Tip revision: 13e1111b238bf6052cfea09b29258503a7bb73a2 authored by Charles Dupont on 24 October 2012, 00:00:00 UTC
version 3.10-1.1
version 3.10-1.1
Tip revision: 13e1111
exportlib.sas
/* Macro exportlib
Exports all SAS datasets in a data library to csv files. One of
the datasets is assumed to be the result of PROC FORMAT CNTLOUT=
if any user formats are referenced. Numeric variables are
formatted in BEST16 format so that date/time variables will be
exported with their internal numeric values. A special file
_contents_.csv is created to hold, for all datasets combined, the
dataset name, dataset label, variable names, labels, formats,
types, and lengths.
Usage:
%INCLUDE "foo\exportlib.sas"; * Define macro;
LIBNAME lib ...; * E.g. LIBNAME d SASV5XPT "foo.xpt";
%exportlib(lib, outdir, tempdir);
Arguments:
lib - SAS libname for input datasets
outdir - directory in which to write .csv files (default ".")
tempdir - temporary directory to hold generated SAS code
(default C:/WINDOWS/TEMP)
*/
%macro exportlib(lib, outdir, tempdir);
%IF %QUOTE(&outdir)= %THEN %LET outdir=.;
%IF %QUOTE(&tempdir)= %THEN %LET tempdir=C:/WINDOWS/TEMP;
OPTIONS NOFMTERR;
PROC COPY IN=&lib OUT=work;RUN;
PROC CONTENTS DATA=work._ALL_ NOPRINT
OUT=_contents_(KEEP=memname memlabel name type label format length
nobs);RUN;
PROC EXPORT DATA=_contents_ OUTFILE="&outdir/_contents_.csv" REPLACE;RUN;
DATA _NULL_; SET _contents_; BY MEMNAME;
FILE "&tempdir/_export_.sas"; RETAIN bk -1;
if FIRST.MEMNAME & (NOBS > 0) THEN DO;
PUT "DATA " MEMNAME "; SET " MEMNAME ";FORMAT _NUMERIC_ BEST14.;RUN;";
PUT "PROC EXPORT DATA=" MEMNAME " OUTFILE=" '"' "&outdir/"
MEMNAME +bk ".csv" '" ' "REPLACE;RUN;";
END;
RUN;
%INCLUDE "&tempdir/_export_.sas";RUN;
%MEND exportlib;