必要がdatastep外マクロ変数の評価を行い、変数の存在に応じて、挿入を実行することです:入力値
data my_dataSet;
set ...
....
if %SYMEXIST(Variable_from_prior_code) = 1 then do;
dataset_variable = &Variable_from_prior_code.;
end;
else do;
dataset_variable = &Some_default_value_from_prior_code;
end;
しかし、これは、コンパイラで失敗"見かけ上のシンボリックリファレンス& Variable_from_prior_code"として実行しようとしています。解決されていません。つまり条件が満たされない場合でも、コンパイラはif文の内容をチェックします。
私は愚かな回避策を思い付いた:「
if %SYMEXIST(Variable_from_prior_code) = 0 then do;
dataset_variable = &Some_default_value_from_prior_code
%let Variable_from_prior_code=0; /*Dummy value*/
end;
else do;
dataset_variable = &Variable_from_prior_code.;
end;
コンテンツを評価するから、コンパイラを制限する方法、それはshouldn:反対directonからこれにアプローチするのではなく、アナグマのバッグよりも愚かな感じ条件のために? 代わりに、変数の作成を必要としない、より洗練された回避策がありますか?
マクロロジック(コードの生成に使用)とデータステップロジックが混在しています。コードをマクロにラップすると、%IFを使用して条件付きでコードを生成できます。 – Tom