Оператор retain
используется для поддержания значения неустановленной переменной на протяжении итераций неявного цикла, который происходит во время шага DATA
.
Этот пример будет работать с ACC
группами, имеющими до 15 месяцев (0..15). ACC с большим количеством месяцев увидят сообщение put
в журнале.
data want;
set have;
by ACC;
length bucketstring $20; * bucketstring might have to be made longer;
retain buckstring;
if length (bucketstring) = 20 and not first.ACC then
put 'ERROR: bucketstring has to be longer for the case of ' ACC= month=;
if first.ACC
then bucketstring = cats(month);
else bucketstring = cats(bucketstring,month);
run;
Функция cats
объединяет элементы. Элементы автоматически удаляются из начальных и конечных пробелов, а также при необходимости автоматически преобразуют числовой элемент в символьное значение.