|
沙发

楼主 |
发表于 2005-8-16 09:27:43
|
只看该作者
to scorwill
虽然data step内不能套data step,但是你完全可以运用以下常用数据集操作的函数完成你的需求:
OPEN
FETCH
FETCHOBS
GETVARC
GETVARN
VARNAME
VARNUM
CLOSE
参见样例程序:
[code:404a3]%macro test;
%let dsid=%sysfunc(open(sashelp.class, i));
%do i=1 %to 19;
%let rc = %sysfunc(fetchobs(&dsid, &i));
%let name=%sysfunc(getvarc(&dsid, %sysfunc(varnum (&dsid, NAME))));
%put &name;
%end;
%let rc=%sysfunc(close(&dsid));
%mend;
%test;[/code:404a3]
[code:404a3]data vars;
length name $ 8 type $ 1 format informat $ 10 label $ 40;
drop dsid i num rc;
dsid=open("sashelp.class","i");
num=attrn(dsid,"nvars");
do i=1 to num;
name=varname(dsid,i);
type=vartype(dsid,i);
format=varfmt(dsid,i);
informat=varinfmt(dsid,i);
label=varlabel(dsid,i);
length=varlen(dsid,i);
position=varnum(dsid,name);
output;
end;
rc=close(dsid);
run;[/code:404a3]
你可以仔细琢磨一下,一定能有所领悟的。 <!-- s:idea: --><img src="{SMILIES_PATH}/icon_idea.gif" alt=":idea:" title="Idea" /><!-- s:idea: --> |
|