DATA TEST2;
ARRAY X[10] (1:10);
N=DIM(X);
K=6;
NCOMB=COMB(N,K);
DO CHOICE=1 TO NCOMB;
CALL ALLCOMB(CHOICE,K, OF X[*]);
OUTPUT;
END;
KEEP CHOICE X1-X6;
RUN;
OPTION SYMBOLGEN MLOGIC;
%MACRO COMBINATION(NUM=);
DATA PROD1_#
SET TEST2(WHERE=(CHOICE=&NUM.));
RUN;
PROC TRANSPOSE DATA=PROD1_&NUM. OUT=PROD2_&NUM.(RENAME=(COL1=COL_&NUM.));
VAR X1-X6;
BY CHOICE;
RUN;
PROC SORT DATA=PROD2_&NUM.;
BY COL_&NUM.;
RUN;
PROC SQL;
SELECT COL_&NUM.
INTO :VAR1-:VAR6
FROM PROD2_&NUM.;
QUIT;
%PUT &VAR1 &VAR2 &VAR3 &VAR4 &VAR5 &VAR6;
%MEND;
DATA _NULL_;
SET TEST2;
CALL EXECUTE('%COMBINATION(NUM='||CHOICE||')');
RUN;
以上就是我的代码,但是出来的结果VAR1-VAR6 永远都是一样的3,4,5,6,9,10,而我预想的是CHOICE取值不一样,对应的VAR1-VAR6 是210组不一样的取值; 然而,如果给这段代码定某一个值,比如,num=100,运行下来就完全没问题,真是不知道错在哪里了,求各位大神帮忙看看!拜托了~~拜托了~~[cry]