我正在使用 SAS 循环遍历列表并执行多个文件移动操作。我正在数据null内执行移动。如果在 rc ne 0 时有一个 if/then/do,那么如果成功则有一个 else/do。移动操作运行良好。但是,我想将错误消息传递回宏变量,以便我可以使用 proc sql ;更新...记录适用于移动失败的特定文件的消息,然后研究错误。
移动操作工作正常。但是,我在将 sysmsg() 传递到宏变量时遇到问题。
我尝试过以下方法:
他们似乎都没有用所需的 sysmsg() 文本填充变量。我需要做什么?
问题是否可能是循环固有的,而不是 symput()/sysmsg() 功能固有的?
这有效。
48 %let msg=;
49 data _null_;
50 rx = fileexist('dummy');
51 call symputx('msg',sysmsg());
52 run;
53 %put NOTE: &=MSG;
NOTE: MSG=WARNING: Physical file does not exist, E:\SASConfig\Lev1\SASApp\dummy.
但是,我认为最好在下一个声明中捕获该消息。
48 data _null_;
49 length msg $200;
50 rx = fileexist('dummy'); msg=sysmsg();
51 put msg;
52 call symputx('msg',msg);
53 run;
WARNING: Physical file does not exist, E:\SASConfig\Lev1\SASApp\dummy.
54 %put NOTE: &=MSG;
NOTE: MSG=WARNING: Physical file does not exist, E:\SASConfig\Lev1\SASApp\dummy.
也可能没有消息。当文件存在时。