SASのドキュメントによると:
%INCLUDE Statement
Brings a SAS programming statement, data lines, or both, into a current SAS program.
あなたがしようとしているの注射は完全なステートメントではありませんので、それは失敗します。記述しているアクションのより具体的な説明は%INLINEです。しかし、そのようなSAS声明はありません。
はのは、コード「codegener」とそれがコード生成が単一のステートメントに固有のご使用の文脈では「codegenを」
生成し出力を出力するプログラムを呼ぶことにしましょう。これは、コードジェネレータがファイルの代わりに(後の使用のために)コード変数をマクロ変数に入れるべきであることを強く示唆しています。
DATA statements_meta;
length varname $32 operator $10 value $200;
input varname operator value;
datalines;
a = 0
b = 0
run;
とcodegenerは、DATAステップ
DATA _null_;
file "myfile.snippet";
... looping logic over data for statement construction ...
put " and " varname " = 0 "
...
run;
変更より、以下のようになりcodegenerです:
はcodegener文建設に関するデータを使用していると
DATA _null_;
length snippet $32000;
snippet = "";
... looping logic over data for statement construction ...
snippet = catx (" ", snippet, "and", varname, comparisonOperator, comparisonValue);
... end loop
call symput('snippet', trim(snippet));
stop;
run;
...
DATA ...
if 1=1 &snippet then ... else ...
run;