試みています - > &のvarnumが0より小さい場合varnumが0より大きい場合に変数がDSに存在しないことを意味します。しかし、エラーは、varnumステートメントで複数の引数が発生します。どのように単一のステートメントをチェックするコード&は、これらの変数を持っているvarsマクロ変数BRTHDTC DMDTC RFENDTC RFSTDTCはdsにあるかどうか.. ..?varnumの複数引数でエラーが発生しました
%macro drpchk (lib,dsn);
%local dsid result;
proc sql noprint;
select distinct catx(".",libname,memname), name
into :DS separated by " ", :vars separated by " "
from dictionary.columns
where libname = upcase("&lib") and format=('YYMMDD10.');
quit;
data &dsn(keep=&vars);
set &DS;
run;
%let dsid=%SYSFUNC(open(&dsn));
%IF %SYSFUNC(varnum(&dsid,&vars)) < 0 %THEN %DO;
result=pass;
else result=fail;
end;
run;
%mend;
%drp_chk(dtelib,dte);
データステップでマクロロジックを使用しないでください。ここでは、マクロとデータステップロジックが混在しています。 – Reeza
それはそれを行う方法ではありません。 Varnumは決して正しく解決されず、一度にそれを行う機能はありません。これは意味をなさない。 DICTIONARYテーブルから直接サマリーを作成しないでください。データセットを操作する必要はありません。 – Reeza
特定の変数が存在するかどうかをチェックした結果をどのように表現したいですか?それらのすべてが存在するか、その間に存在するものよりも存在する必要がありますか? – Tom