2015-10-21 2 views
2

Я могу разрешить переменную макроса к имени, которое я ожидал. Но заявление delete в наборах данных proc не распознается. Как заставить его работать?Ошибка макрокоманды PROC DATASETS

PROC DATASETS LIB=WORK NODETAILS NOLIST; 
    DELETE &INPUT._mi &INPUT._lc ; 
RUN; 

MPRINT(GET_true_value): PROC DATASETS LIB=WORK NODETAILS NOLIST; 
NOTE: Line generated by the macro variable "INPUT". 
108   work.true_value_mi 
      __________________ 
      22 
      201 
MPRINT(GET_true_value): DELETE work.true_value_mi work.true_value_lc ; 
NOTE: Enter RUN; to continue or QUIT; to end the procedure. 
MPRINT(GET_true_value): RUN; 

ERROR 22-322: Expecting a name. 

ERROR 201-322: The option is not recognized and will be ignored. 

NOTE: Statements not processed because of errors noted above. 
109 
+0

Учеб наборов данных требует выхода в дополнение к запуску, так что вы также должны закончить прок. Если вы запустили его пару раз, SAS может быть запутан. Также можно попытаться удалить библиотечную часть имени набора данных. – Reeza

+0

@Reeza Следующие PROC DATASETS будут определять границу шага, поэтому это не должно быть проблемой. Ответ Джима здесь верен (т. Е. Второе предложение в вашем комментарии). – Joe

+0

Спасибо, Джо и Риза. Я пропустил это. Да, после удаления части LIB проблема решена. Мой плохой, пропустил глупую вещь. К сожалению, еще одна проблема для решения. Поставит в отдельный вопрос :) –

ответ

3

Похоже, проблема заключается в том, что в заявлении удаления, как указано, содержится имя библиотеки. Это не требуется (и выдает ошибку), потому что библиотека указана в инструкции PROC DATASETS.

Вы хотите, чтобы ваши макропеременные разрешить это:

PROC DATASETS LIB=WORK NODETAILS NOLIST; 
    DELETE true_value_mi ; 
RUN; 
+0

Спасибо большое JimL .. это помогло решить проблему –

Смежные вопросы