Это сам код - до того, как встроить внутренний материал в макрос, все работало:
%macro test(product, dedi, pfi,md,sd,cIi,cIIi,cIIIi,cIo,cIIo,cIIIo,bm);
%let product = ∏
<more let statements here for all variables>
<data pull happens here>
PROC SQL;
CREATE TABLE WORK.ProdFilter AS
SELECT t1.*
FROM WORK.PRODCLAIMS2 t1
WHERE t1.Product_Type = &Product
;QUIT;
<more code here>
%mend
%test(&product, &dedi, &pfi,&Ded, &Sd,&CIib, &CIIib,&CIIIib, &CIob, &CIIob,&CIIIob,&bm);
Он успешно может выполнить извлечение данных, а затем ломается, когда я впервые пытаюсь использовать переменную. Это пользовательские переменные, использующие приглашения, которые, кажется, также работают нормально, но затем я получаю ошибку:
"ОШИБКА: в участвующих таблицах не найдено следующих столбцов: DenP"
DenP - это пользовательский ввод, и я знаю, что это продукт. Это не столбец - столбец t1.Product_Type, и я пытаюсь отфильтровать только те строки с «DenP» в этом столбце. Этот шаг отлично работает, когда не в макросе.
Я почти уверен, что это связано либо с тем, как я написал и назвал сам макрос, либо с тем, что он злится от того, как я назвал подсказки? Я включил первый оператор% let в качестве примера - возможно, если я назову подсказки по-другому, это будет иметь значение?
Мы никогда не доберемся до тех пор, пока это не прекратится с этой первой ошибкой. Любое руководство о том, где возникла проблема, было бы полезно - я думал, что должен был перечислить переменные в макросе (), но, возможно, я должен был перечислить что-то еще?