Среди сильных сторон версии SAS 9.4 в интернете указывается функция DOSUBL.
Давайте разберем что же в ней такого особенного.
На сайте support.sas.com дается следующее описание данной функции:
Функция позволяет импортировать макро переменные из вызываемой среды и экспортировать макро переменные обратно в вызываемую среду.
Для большей наглядности давайте все же рассмотрим на примерах, а еще лучше в сравнении с функцией CALL EXECUTE.
Для начала создадим макрос, который будет создавать макро переменную xyz (с помощью call symput) и присваивать ей значение передаваемое нашему макросу:
Далее приведу код программы с использованием функции CALL ECECUTE:
- Сверху видно окончание кода макроса.
- Далее с помощью %let создаем макро переменную xyz и присваиваем ей значение q.
- После чего идет data step шаг в котором с помощью функции call execute вызывается созданный нами макрос %doit с параметром aa.
- После переменной xyz_value присваивается значение макро переменной xyz с помощью функции symget.
- В конце выводим значение переменной xyz_value.
Действительно значение переменной изменилось на то, которое мы хотели, а именно на aa
Теперь давайте приведем тот же самый пример, только с использованием функции dosubl: