誰かがなぜそれが起こっているのか説明できますか? 私はDB内のオブジェクトの依存関係ツリーを見つけようとしています。 たとえば、view5はトップビュー4に座っているビューで、トップビュー1に座っているとします。 また、 view3上に座っていますview2上に座っていますview1。 だから、 私はview1のマクロを照会するとき、私はview4、view5、view2とview3を取得する必要があります。SAS:再帰マクロが無限ループに入ります
これはマクロです:
最初の繰り返しがうまく機能
%macro dependencies(obj=);
%let dependent_objectname =;
proc sql noprint;
select "'"||trim(dependent_objectname)||"'"
into :dependent_objectname separated by ", "
from &_input.
where src_objectname in (&obj.);
quit;
%put &dependent_objectname.;
%let dependent_objectname = (&dependent_objectname.);
%put &dependent_objectname.;
%if %length("&dependent_objectname")>0 %then
%dependencies(obj = &dependent_objectname.);
%mend dependencies;
%let source = 'ditemp.depend_test1';
%put &source.;
%dependencies(obj = &source.);
、 私はオブジェクトが "( 'ditemp.depend_test2'、 'ditemp.depend_test3')" の形でトップdepend_test1 に座ってもらいます は、私は夫婦の問題を参照してください...のみが止まることはありません
これはツリーのトラバーサルの問題だと思います。最近、SAS-L listservで、ハッシュ・ソリューションを使って尋ねられました。 – Reeza
https://gist.github.com/statgeek/14e3aa2a9f718f551cd98134e9ceed30これも問題は解決するかもしれませんが、マクロの問題は解決しないかもしれません。 – Reeza