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_&reg.; run;
    data person_record; set datain.person_record_&reg.; run;
    %let outdir_ = &outdir.\output_&reg.;
     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_&reg.;
        run;

        data person_record;
            set datain.person_record_&reg.;
        run;

        %let outdir_ = &outdir.\output_&reg.;

        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
之类的东西转换为两个令牌,而不是一个。