SAS逐字段检查

时间:2018-10-23 16:53:20

标签: arrays sas datastep

我尝试建立一点检查过程。一个proc sql生成了一个行表(和13个字段),下一步,我需要检查表中的所选字段的值是否<> 0。 在我当前(未完成)的代码下面,并带有示例表“ have”:

data Have;
   input REFERENCE_DATE  
         L_CONTRACT 
         L_CONTRACT_ACTIVITY
         L_LFC
         L_CONTRACT_CO_CUSTOMER
         L_CONTRACT_OBJECT
         L_CUSTOMER
         L_CUSTOMER_RETAIL
         L_DPD
         L_GL_ACCOUNT 
         L_GL_AMOUNT
         L_EXTRA_COST 
         L_PRODUCT;
   datalines;
450 1 9 8 6 0 4 3 0 0 0 0 0
;

Data work.Collect_data2;
    set work.have;
ARRAY tab(13) _temporary_ (0,0,0,0,0,0,0,0,0,0,0,0,0) ;
ARRAY tab_check(*) L_CONTRACT-L_CUSTOMER_RETAIL;
input id L_CONTRACT-L_CUSTOMER_RETAIL;

do j= 2 to 7;

end;

run;

从L_CONTRACT到L_CUSTOMER_RETAIL(字段2到7),我需要逐字段检查。 如果这部分的任何字段的值都为0-我需要返回信息,表明事情不正常。 感谢您的帮助!

最诚挚的问候

1 个答案:

答案 0 :(得分:0)

length flag $10.;
if whichn(0, of L_contract -- l_customer_retail) then flag='Not Ok';
else flag='Ok';

您可以使用WHICHN()函数来测试一系列变量中是否有任何值为0。不需要数组声明。对于您为什么同时拥有INPUT语句和SET语句却没有INFILE或'CARDS`的原因,我感到困惑。这对我来说没有意义。

编辑:将单个破折号更改为两个破折号。