数据 _null_ 内的 SYMPUT/SYMPUTX 内的 SAS SYSMSG()

问题描述 投票:0回答:1

我正在使用 SAS 循环遍历列表并执行多个文件移动操作。我正在数据null内执行移动。如果在 rc ne 0 时有一个 if/then/do,那么如果成功则有一个 else/do。移动操作运行良好。但是,我想将错误消息传递回宏变量,以便我可以使用 proc sql ;更新...记录适用于移动失败的特定文件的消息,然后研究错误。

移动操作工作正常。但是,我在将 sysmsg() 传递到宏变量时遇到问题。

我尝试过以下方法:

  • symput/symputx("mvar",sysmsg())
  • symput(“mvar”,%sysfunc(sysmsg())
  • %let mvar=%sysfunc(sysmsg())
  • msg = sysmsg() ; symput("mvar",msg)

他们似乎都没有用所需的 sysmsg() 文本填充变量。我需要做什么?

问题是否可能是循环固有的,而不是 symput()/sysmsg() 功能固有的?

sas rc
1个回答
0
投票

这有效。

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.

也可能没有消息。当文件存在时。

© www.soinside.com 2019 - 2024. All rights reserved.