SAS SYSCC Макропеременное поведение - PullRequest
0 голосов
/ 20 ноября 2018

Насколько я понимаю, если в процессе SAS возникает ошибка, значение & SYSCC.не будет 0., который является кодом возврата успеха.Я записываю указанную переменную в текстовый файл, чтобы он действовал как сигнал go / no go для скрипта Python, который я использую для организации некоторых более широких процессов.преднамеренные ошибки Я заметил, что он по-прежнему возвращает ноль:

%macro test;


sdsdfsdfsdfsdfsdfsdfsdfsdfsdfsdfs

%put &syscc. **********************************;

%mend;

%test;

Я что-то не так понял?

Спасибо

1 Ответ

0 голосов
/ 20 ноября 2018

Это проблема времени.В момент выполнения оператора% put не было сгенерировано ошибок.Макрос% test генерирует некоторый текст (sdsfsdfs ..) и записывает действительный оператор put.Точка с запятой после вызова макроса ; создает границу оператора (sdsfsdf ...;), которая затем выдает ошибку.

Порядок выполнения:

1) скомпилировать макрос

2) выполнить макрос (%test)

3) выполнить %put оператор

4) отправить sdsdfsdfsdfsdfsdfsdfsdfsdfsdfsdfs на входстек

5) завершить выполнение макроса

6) отправить последнюю точку с запятой во входной стек (;)

7) sdsdfsdfsdfsdfsdfsdfsdfsdfsdfsdfs; выполнено, что, вероятно, приводит к ошибке(имя переменной слишком длинное, но может быть частью действительного оператора %let);

...