2013-12-14 23 views
0

我想創建一個將1行插入到sas數據集中的unix實用程序。運行時,此scipt將要求用戶爲數據集中的每個變量插入值(最好告訴他變量的類型和長度)。然後它將使用EXPORT命令將這些值傳遞給SAS,然後SAS將爲這些變量創建宏變量並使用'proc sql;插入'將插入值到數據集中。在任何sas數據集中插入行的實用程序

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追加將其追加到原始數據

回答

0

下面是正從UNIX用戶輸入的值到SAS一種可能的方法:

  1. 讓您的UNIX shell腳本將用戶輸入的值寫入(格式一致的格式)的臨時文本文件中,例如, CSV
  2. 編寫SAS數據步驟,可以讀取文本文件並將值導入所需的格式。您可以運行proc import並查看日誌以瞭解要使用的代碼類型。
  3. 讓腳本通過命令行調用SAS,告訴它運行包含您編寫的數據步驟的程序。