PROC SQL/ Переменные в макросе SAS игнорируются
У меня есть макрос ниже PARAMETERS, который присваивает значения пяти переменным и создает таблицу MD_WRK.SUB_ID. Моя проблема в том, что код внутри макроса работал нормально, пока я не поместил его в макрос. Теперь переменные не заполняются, а PROC SQL для создания таблицы не выполняется. Когда я удаляю "%MACRO", цвета PROC SQL меняются, чтобы указать, что это правильно, но когда внутри макроса они неактивны. Я не могу понять, почему код в макросе становится недействительным.
%MACRO PARAMETERS;
%GLOBAL FDMVAR1 FDMVAR2 UPBOUND LOBOUND GROUPVAR;
%LET FDMVAR1 ='31Mar2017:0:0:0'dt; /* Start Date */
%LET FDMVAR2 = '30Apr2017:0:0:0'dt; /* End Date */
%LET UPBOUND = .01;
%LET LOBOUND = -.01;
%LET GROUPVAR = 1;
PROC SQL;
CREATE TABLE MD_WRK.SUB_ID
(SUBSYS_ID char(6));
INSERT INTO MD_WRK.SUB_ID
VALUES('CBS')
VALUES('CDS')
VALUES('DDA')
VALUES('IMCOR')
VALUES('ODL')
VALUES('OEC')
VALUES('OEC2')
VALUES('SAV')
VALUES('PWRCDS')
VALUES('SMARTY')
VALUES('MRKTLN')
;
QUIT;
%MEND PARAMETERS;
1 ответ
Когда вы говорите "Изменение цветов PROC SQL", если вы ссылаетесь на цвет кода, как показано в Enterprise Guide или каком-либо другом клиенте, который выполняет автоматическую раскраску синтаксиса, я бы просто проигнорировал раскраску. В окраске синтаксиса есть некоторые небольшие сбои, но обратите внимание, что эти цвета не являются частью кода, поэтому, даже если раскраска кода предполагает, что что-то может быть не так, она будет работать нормально, если синтаксис правильный.
Если вы включите options mprint;
и вызвать ваш макрос, журнал должен показать, что набор данных MD_WRK.SUB_ID был создан (или дать вам сообщение об ошибке, объясняющее, почему он не был создан).
Как упомянул @Reeza, макропеременные, которые вы создаете, вероятно, создаются как локальные макропеременные, поэтому они не будут существовать вне макроса. Если вы объявите их как% global внутри макроса, они будут существовать вне макроса, потому что они будут храниться в глобальной таблице символов. Но обычно есть лучшие подходы, чем полагаться на глобальные макропеременные.