The CALL MISSING routine assigns an ordinary numeric missing value (.) to each numeric variable in the argument list.
The CALL MISSING routine assigns a character missing value (a blank) to each character variable in the argument list. If the current length of the character variable equals the maximum length, the current length is not changed. Otherwise, the current length is set to 1.
You can mix character and numeric variables in the argument list.
prod='shoes';
invty=7498;
sales=23759;
call missing(prod,invty);
put prod= invty= sales=;
prod= invty=. sales=23759
Monday, December 28, 2009
Wednesday, December 23, 2009
XMRLMEM option
Obtain the amount of computer memory available to SAS with the undocumented XMRLMEM option.
data _null_;
format amt comma20.;
amt = input(getoption('xmrlmem'),20.);
put amt=;
run;
The code shown above gives the total number of bytes of real memory available. (It does not count the operating system's virtual memory; only real memory). Divide this number by 1024 to get it into K's... or whatever to get it into Megs or Gigs.
XMRLMEM is an undocumented diagnostic option that can come in handy when considering allocating a bushel-full of buffers or considering doing some big-time hashing.
Link: http://www2.sas.com/proceedings/forum2007/271-2007.pdf
data _null_;
format amt comma20.;
amt = input(getoption('xmrlmem'),20.);
put amt=;
run;
The code shown above gives the total number of bytes of real memory available. (It does not count the operating system's virtual memory; only real memory). Divide this number by 1024 to get it into K's... or whatever to get it into Megs or Gigs.
XMRLMEM is an undocumented diagnostic option that can come in handy when considering allocating a bushel-full of buffers or considering doing some big-time hashing.
Link: http://www2.sas.com/proceedings/forum2007/271-2007.pdf
Saturday, December 19, 2009
Seperate data into EXCEL sheets
%macro multisheet;
proc sql noprint;
select distinct age
into :idage1 - :idage99
from sashelp.class;
%let agecnt = &sqlobs;
quit;
%do i = 1 %to &agecnt;
PROC EXPORT DATA = sashelp.class(where=(age=&&idage&i))
OUTFILE="C:\temp\class_ages.xls"
DBMS= excel
REPLACE;
sheet = "Age_&&idage&i";
RUN;
%END;
%mend multisheet;
%multisheet
proc sql noprint;
select distinct age
into :idage1 - :idage99
from sashelp.class;
%let agecnt = &sqlobs;
quit;
%do i = 1 %to &agecnt;
PROC EXPORT DATA = sashelp.class(where=(age=&&idage&i))
OUTFILE="C:\temp\class_ages.xls"
DBMS= excel
REPLACE;
sheet = "Age_&&idage&i";
RUN;
%END;
%mend multisheet;
%multisheet
Friday, December 4, 2009
List Oracle tables in SAS
C-TASC specific
libname oralib ORACLE user=ctpmstat path="@xxxx" password = xxxxxxx;
proc freq data = oralib.all_tables;
tables owner * table_name/list;
run;
libname oralib ORACLE user=ctpmstat path="@xxxx" password = xxxxxxx;
proc freq data = oralib.all_tables;
tables owner * table_name/list;
run;
Wednesday, December 2, 2009
X Command in SAS
*** Use sas to perform Unix command: find all xpt files under the known directory, sort by the directries, output in a txt file ***;
%macro find ;
X 'find /home/xxx -name "*.xpt" -exec ls -i1 {} \; | sort > /home/xxx/zzz.txt';
%if &sysrc ne 0 %then %do ;
endsas;
%end ;
%mend find ;
%find ;
Link: http://support.sas.com/documentation/cdl/en/hostwin/61924/HTML/default/exittemp.htm
Link: www.lexjansen.com/pharmasug/2005/posters/po13.pdf
%macro find ;
X 'find /home/xxx -name "*.xpt" -exec ls -i1 {} \; | sort > /home/xxx/zzz.txt';
%if &sysrc ne 0 %then %do ;
endsas;
%end ;
%mend find ;
%find ;
Link: http://support.sas.com/documentation/cdl/en/hostwin/61924/HTML/default/exittemp.htm
Link: www.lexjansen.com/pharmasug/2005/posters/po13.pdf
Subscribe to:
Posts (Atom)