用于在任何sas数据集中插入行的实用程序

时间:2013-12-14 06:46:06

标签: unix export sas sas-macro proc-sql

我想创建一个unix实用程序,将1行插入sas数据集。运行时,此scipt将要求用户为数据集中的每个变量插入值(优先告诉他变量的类型和长度)。然后它将使用EXPORT命令将这些值传递给SAS,然后SAS将为这些变量创建宏变量并使用'proc sql;插入'将值插入数据集。

data raw_str;
 /* init PDV */
 if 0 then
 set tracking_data;
 /* programmatic structure to enable addressing of vars */
 array a_c(*) _character_;
 array a_n(*) _numeric_;
run;

现在raw_str将是类型和长度与跟踪数据

相同的变量
proc sql noprint;
  select distinct name 
  into : varlist separated by ' '
  from dictionary.columns
  where libname='WORK'
    and memname='raw_str';
quit;

然后我想将此列表传递给unix,从那里我将要求用户输入这些变量的值,然后我将这些值附加到tracking_data中。

问题在于将值从unix传递到sas并为这些值创建宏变量

我也可以将变量的长度和类型传递给前端,告诉用户传递与raw_str数据集的类型和长度相匹配的值

proc sql;
  insert into raw_str
  values (&val1, &val2, &val3...);
quit;

最后我可以使用proc append将其附加到原始数据中

1 个答案:

答案 0 :(得分:0)

以下是将用户输入的值从UNIX获取到SAS的一种可能方法:

  1. 让您的UNIX shell脚本将用户输入的值写入(格式一致的)临时文本文件,例如: CSV
  2. 编写可以读取文本文件并将值导入所需格式的SAS数据步骤。您可以运行proc import并查看日志以了解要使用的代码类型。
  3. 让脚本通过命令行调用SAS,告诉它运行包含您编写的数据步骤的程序。