Это проблема времени.В момент выполнения оператора% put не было сгенерировано ошибок.Макрос% test генерирует некоторый текст (sdsfsdfs ..) и записывает действительный оператор put
.Точка с запятой после вызова макроса ;
создает границу оператора (sdsfsdf ...;), которая затем выдает ошибку.
Порядок выполнения:
1) скомпилировать макрос
2) выполнить макрос (%test
)
3) выполнить %put
оператор
4) отправить sdsdfsdfsdfsdfsdfsdfsdfsdfsdfsdfs
на входстек
5) завершить выполнение макроса
6) отправить последнюю точку с запятой во входной стек (;
)
7) sdsdfsdfsdfsdfsdfsdfsdfsdfsdfsdfs;
выполнено, что, вероятно, приводит к ошибке(имя переменной слишком длинное, но может быть частью действительного оператора %let
);