ДАННЫЕ Переменные шага отличаются от строковых переменных в других языках кодирования.Каждая переменная шага DATA имеет фиксированную длину.Переменные длины могут быть:
- явно объявлены (перед первым использованием) с оператором
LENGTH
или ATTRIBUTE
, - «унаследованы» от набора данных, передаваемых через
SET
, MERGE
, UPDATE
или MODIFY
, - или выводятся контекстуально с момента их первого использования в программе шагов данных.
Как правильно ответил Крис Дж в своемкомментарий, jobA
будет иметь длину $ 2, потому что его первое использование является контекстным, как 'FA'
, который имеет два символа.Аналогичным образом, jobB
будет иметь длину $ 1.
Для вашего конкретного вопроса результат конкатенации имеет длину 3 символа и сохраняется в переменной из 2 символов.Автоматическое усечение (без сообщений журнала) происходит, когда результат сохраняется в переменной.
Все символьные переменные неявно заполняются хвостом с пробелами по длине, что является важным фактором при конкатенации, иногда при конкатенацииВы почесаете голову и спросите, где остальная часть результата? или почему так много пробелов перед последующими частями?
Оператор конкатенации (||
) не обрезает конечные пробелы, когдаобъединяя ценности.Это может вызвать путаницу, когда целевая переменная недостаточно длинна, чтобы содержать длины всех объединяемых переменных - конкатенация будет выглядеть «не произошло».В великие старые времена кодовый код trim(left(variable-1))||trim(left(variable-2))||..||trim(left(variable-n))
использовался, чтобы избежать этой ситуации.
Сегодня SAS имеет семейство функций конкатенации (cat
, cats
, catt
, catx
, catq
), которые немного упрощают комбинирование символьных выражений.
Рассмотрим чтение документации SAS Пошаговое программирование с помощью Base SAS, Объединение символьных значений: использование конкатенации