Тщательно проверьте логику.Вы хотите установить значение FIRST, когда FIRST отсутствует, и установить значение LAST, если ток НЕ отсутствует.
array auths auth1-auth50;
firstauth=auths(1);
do i=1 to dim(auths);
if missing(firstauth) then firstauth = auths{i};
if not missing(auths{i}) then lastauth = auths{i};
end;
Примечание. Дополнительное назначение перед циклом DO - заставить SAS определить новую переменную, так как в противном случае первое использование будет в условии IF.Если у вас уже есть LENGTH или другой оператор, который определяет FIRSTAUTH, тогда дополнительный оператор присваивания не требуется.
Или пропустите массив и просто используйте функцию COALESCEC (), чтобы найти первое значение.И просто измените порядок переменных, чтобы также использовать его для поиска последнего значения.
firstauth = coalescec(of auth1-auth50);
lastauth = coalescec(of auth50-auth1);