IML中的SAS全局变量

时间:2014-02-12 13:04:10

标签: variables sas global

我想在proc iml中创建全局变量,指定另一个过程中的步骤数:

%global iterations;

proc iml;
use data;
read all var _CHAR_ into data;
row = nrow(data);
%let iterations = row;
quit;

data _null_;
    do i=1 to &iterations;
    put i=;
end;
run;

但是这样我最终得到一个错误:“无效的DO循环控制信息,INITIAL或TO表达式丢失或者BY表达式丢失,零或无效”。即使我尝试执行

%put &iterations;

我得到了

row

响应而不是对应于数据行的数字的值。请告诉我如何在程序中传递这些信息。感谢。

1 个答案:

答案 0 :(得分:2)

试试这个:

call symput("iterations_glob", iterations);
将值分配给变量后,在proc iml

proc iml;
use data;
read all var _CHAR_ into data;
row = nrow(data);
iterations = row;
call symput("iterations_glob", iterations);
quit;

这个新的 iterations_glob 变量应该在数据步骤中看到。