0

sas データセットに 1 行を挿入する UNIX ユーティリティを作成したいと考えています。実行すると、このスクリプトは、データセット内の各変数に値を挿入するようにユーザーに要求します (できれば、変数の型と長さを伝えます)。次に、EXPORTコマンドを使用してこれらの値をSASに渡し、SASはこれらの変数のマクロ変数を作成し、'proc sql;を使用します。insert into' は値をデータセットに挿入します。

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 を使用して元のデータに追加できます

4

1 に答える 1

0

ユーザーが入力した値を UNIX から SAS に取得する方法の 1 つを次に示します。

  1. UNIX シェル スクリプトで、ユーザーが入力した値を (一貫してフォーマットされた) 一時テキスト ファイル (CSV など) に書き出すようにします。
  2. テキスト ファイルを読み取り、値を必要な形式にインポートできる SAS データ ステップを記述します。proc import を実行してログを確認すると、使用するコードの種類がわかります。
  3. スクリプトでコマンド ライン経由で SAS を呼び出し、作成したデータ ステップを含むプログラムを実行するように指示します。
于 2014-08-30T19:30:47.327 に答える