Sas Macro To Create A Delimited Text File From A Sas Dataset

  • Uploaded by: SASTechies
  • 0
  • 0
  • June 2020
  • PDF

This document was uploaded by user and they confirmed that they have the permission to share it. If you are author or own the copyright of this book, please report to us by using this DMCA report form. Report DMCA


Overview

Download & View Sas Macro To Create A Delimited Text File From A Sas Dataset as PDF for free.

More details

  • Words: 450
  • Pages: 4
SAS Macro to Create a delimited text file from a SAS dataset... A document that discusses SAS Macro to Create a delimited text file from a SAS data set.. options mprint; data one; input id name :$20. amount ; date=today(); format amount dollar10.2 date mmddyy10.; label id="Customer ID Number"; datalines; 1 Grant 57.23 2 Michael 45.68 3 Tammy 53.21 ;

%macro makefile ( dataset=_last_ , /* Dataset to write */ filename=print , /* File to write to */ dlmr="," , /* Delimiter between values */ qtes="no" , /* Should SAS quote all character variables? */ header="no" , /* Do you want a header line w/ column names? */ label="no" /* Should labels be used instead of var names in header? */ ); proc contents data=&dataset out=___out_; run; /* Return to orig order */ proc sort data=___out_; by varnum; run; /* Build list of variable names */ data _null_; set ___out_ nobs=count;

call symput("name"!!left(put(_n_,3.)),name); call symput("type"!!left(put(_n_,3.)),type); /* Use var name when label not present */ if label=" " then label=name; call symput("lbl"!!left(put(_n_,3.)),label); if _n_=1 then call symput("numvars", trim(left(put(count, best.)))); run; /* Create file */ data _null_; set &dataset; file &filename; %global temp; %if &qtes="yes" %then %let temp='"'; %else %let temp=' '; %if &header="yes" %then %do; /* Conditionally add column names */ if _n_=1 then do; put %if &label="yes" %then %do; %do i=1 %to &numvars-1; &temp "%trim(%bquote(&&lbl&i)) " +(-1) &temp &dlmr %end; &temp "%trim(%bquote(&&lbl&numvars)) " &temp; %end; %else %do; %do i=1 %to &numvars-1; &temp "%trim(&&name&i) " +(-1) &temp &dlmr %end; &temp "%trim(&&name&numvars) " &temp ; %end; ; end; %end; /* Build PUT stmt to write values */ put %do i = 1 %to &numvars -1; %if &&type&i ne 1 and &qtes="yes" %then %do; '"' &&name&i +(-1) '"' &dlmr %end;

%else %do; &&name&i +(-1) &dlmr %end; %end; %if &&type&i ne 1 and &qtes="yes" %then %do; /* Write last varname */ '"' &&name&numvars +(-1) '"'; %end; %else %do; /* Write last varname */ &&name&numvars; %end; run; %mend makefile; /* If LRECL= required because of records longer the 256, specify here */ filename myfile "~/tmp/rawdata" lrecl=1000;

/* Invoke macro to write to a file, include proper parameters for your case. */ /* Make sure that the variables are in the order you want and have the */ /* desired formats. */ %makefile(dataset=one, filename=print, /* FILEREF or DDNAME of the file */ dlmr=",", qtes="yes", header="yes", label="yes"); run; You might also like: • SAS Macro to split a dataset into multiple datasets vertically with a common primary key • SAS macro to reorder dataset variables in alphabetical order • SAS Interview Questions and Answers(2) • Ways to Count the Number of Obs in a dataset and pass it into a macro variable...

Read full article @ http://sastechies.blogspot.com/2009/11/sas-macro-to-createdelimited-text-file.html

Related Documents


More Documents from ""