Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jsp/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
SAS:当;其中;“a”中的条件;修改";声明不成立?_Sas - Fatal编程技术网

SAS:当;其中;“a”中的条件;修改";声明不成立?

SAS:当;其中;“a”中的条件;修改";声明不成立?,sas,Sas,我有以下SAS代码: data have_1; modify have_1 have_2(where=(message="X")) updatemode=nomissingcheck; by reference; qty=qty-canceled_qty; if qty=0 then delete; run; 这是在一个循环中,这意味着对于我的问题,数据集在每个循环迭代中都有变化。字段条目消息更改代码,如“X”、“A”、“B”。。。消息的到达顺序是最重要的。这就是为什么我在一个循环中工作,

我有以下SAS代码:

data have_1;
modify have_1 have_2(where=(message="X")) updatemode=nomissingcheck;
by reference;
qty=qty-canceled_qty; 
if qty=0 then delete; 
run;
这是在一个循环中,这意味着对于我的问题,数据集
在每个循环迭代中都有变化。字段条目
消息
更改代码,如“X”、“A”、“B”。。。消息的到达顺序是最重要的。这就是为什么我在一个循环中工作,循环遍历每条消息的序列。
have_2
中的每条消息对
have_1
有不同的含义。消息“X”意味着我必须将数量更新为特定的参考号

因此,对于循环中的每个
消息
,我都有一个
modify
语句,因为我不知道消息的顺序。如果在上面的示例中,
消息
不等于“X”,如何避免SAS覆盖我的数据集
have_1

这个问题是我之前的“如何避免SAS覆盖我的数据集…”问题的后续问题-如果您的意思是在记录级别上覆盖-检查
\u iorc\u
值可以让您控制要做什么。您可以将自己的逻辑添加到以下模板代码的更新中。 不匹配的值为“\u DSENMR”

在这里看到更多

data have_1;
modify have_1 have_2(where=(message="X")) updatemode=nomissingcheck;
by reference;

    if      _iorc_ = %sysrc(_SOK) then do;
      * Update row ;
      replace;
    end;
    else if _iorc_ = %sysrc(_DSENMR) then do;
      * Add row ;
      output;
      _error_ = 0;
    end;
    else if _iorc_ = %sysrc(_DSEMTR) then do;
      * Multiple TRANSACTION data set observations do ;
      * not exist in MASTER data set ;
      _error_ = 0;
    end;
    else if _iorc_ = %sysrc(_DSENOM) then do;
      * No matching observation was found in MASTER data set ;
      _error_ = 0;
    end;
  run;