Sas 为什么无法在定义库中查看数据文件
我正在运行以下命令Sas 为什么无法在定义库中查看数据文件,sas,shared-libraries,data-files,Sas,Shared Libraries,Data Files,我正在运行以下命令 %global source_dir util_dir paramf workdir datadir dataunitid saserror ; %let datadir = %str(I:....\KATER\DATA); %let outdir = %str(I:...\KATER\Results); I set my library libname datain "&datadir"; options mstored sasms
%global source_dir util_dir paramf workdir datadir
dataunitid
saserror
;
%let datadir = %str(I:....\KATER\DATA);
%let outdir = %str(I:...\KATER\Results);
I set my library
libname datain "&datadir";
options mstored sasmstore=datain;
and then
%global liste_reg;
%let liste_reg=22 31;
%do k=1 %to %sysfunc(countw(&liste_reg.));
%let reg=%scan(&liste_reg.,&k.);
data hh_record; set datain.hh_record_®.; run;
data person_record; set datain.person_record_®.; run;
%let outdir_ = &outdir.\output_®.;
proc printto log = "&outdir_.Log.txt"; run;
但我有一个错误:
ERROR: File DATAIN.PERSON_RECORD_.DATA does not exist.
ERROR: File DATAIN.HH_RECORD_.DATA does not exist.
为什么会发生这种情况,我如何将数据放入datain库中
我是SAS的新手,所以我有点困惑。总的来说,我意识到两个库中都没有什么
编辑完整代码:
%global source_dir util_dir paramf workdir datadir
dataunitid
saserror
;
%let source_dir = %str(I:...ONS_Transf_20170523);
*location of code;
%let util_dir = &source_dir.%str(\dsp_utils);
%let datadir = %str(...KATER\DATA);
%let outdir = %str(...\KATER\Results);
%let paramf = &datadir.%str(\parameter_file\param.csv);
options mautosource mrecall sasautos=(sasautos "&source_dir" "&util_dir") nolabel;
%reset_saserror;
libname datain "&datadir";
options mstored sasmstore=datain;
libname outdir "&outdir.\output";
options mstored sasmstore=outdir;
%macro sdc_super_control_KAT;
%global liste_reg;
%let liste_reg=22 31;
%do k=1 %to %sysfunc(countw(&liste_reg.));
%let reg=%scan(&liste_reg.,&k.);
data hh_record;
set datain.hh_record_®.;
run;
data person_record;
set datain.person_record_®.;
run;
%let outdir_ = &outdir.\output_®.;
proc printto log = "&outdir_.Log.txt";
run;
/
%sdc_control;
*copy files to permanent library;
proc copy in=work out=outdir_;
select sdcresults_hh_:;
run;
proc printto;
run;
%end;
data outdir.params;
set diagnostics_params;
run;
%mend sdc_super_control_KAT;
%sdc_super_control_KAT;
我认为你没有向我们展示完整的代码。上述问题似乎是由于
®
宏变量未解析为某个值造成的,但没有显示出发生这种情况的原因。此外,错误消息的顺序错误(hh\u记录
)应放在日志的第一位
总之,这是因为您的
reg
变量正在解析为缺少的值,或者因为找不到它(如果找不到,日志应该会这样说)。谢谢Allan,接下来我将包含我的完整代码。我没有得到你的答案。嗨,Katerina-变量k
可能被%sdc\u控件中的声明覆盖代码>。你能分享一下日志吗?最好在问题中这样做,而不是发布答案…在MPRINT和SYMBOLGEN选项打开的情况下再次运行宏。然后,您应该能够知道宏变量REG未设置的原因。你也可以检查一下你使用了这么多的宏引用。有时,这会导致宏处理器将person\u record\ureg
之类的东西转换为两个令牌,而不是一个。