SAS проверять поле за полем - PullRequest
0 голосов
/ 23 октября 2018

Я пытаюсь построить небольшой процесс проверки.Один процесс sql сгенерировал одну таблицу строк (и 13 полей), и на следующем шаге мне нужно проверить, что выбранное поле в таблице имеет значение <> 0. Ниже моего текущего (не заполненного) кода с примером таблицы "иметь":

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 голосов
/ 23 октября 2018
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`.Это не имеет смысла для меня.

Редактировать: изменить одну черту на две.

...