#variables #sas #filepath #sas-macro
#переменные #sas #путь к файлу #sas-макрос
Вопрос:
У меня есть две строки, которые я хочу объединить, чтобы получить путь к файлу, который будет использоваться в инструкции PROC IMPORT в SAS
%let TypeName = XYZ;
%let InputDirectory = \Nam1Nam2Nam3Dataset;
%let FileType = Filing.csv;
%let Filename = amp;TypeNameamp;FileType;
%put amp;Filename;
%let CompInputDirect = amp;InputDirectoryamp;Filename;
PROC IMPORT DATAFILE= %sysfunc(amp;CompInputDirect)
OUT= outdata
DBMS=csv
REPLACE;
GETNAMES=YES;
RUN;
Я получаю сообщение об ошибке, в котором говорится, что
ERROR: Function name missing in %SYSFUNC or %QSYSFUNC macro function reference.
Как мне поместить переменную макроса, содержащую полный путь к файлу, в инструкцию Proc Import? Заранее спасибо.
Ответ №1:
Я полагаю, вы имели в виду использовать функцию КАВЫЧЕК.
%sysfunc(quote(amp;CompInputDirect))
Или вы можете указать свои собственные кавычки.
"amp;CompInputDirect"
Комментарии:
1. Привет @data_null Спасибо за это!
Ответ №2:
Разрешение символов макроса amp;<name>
более формально amp;<name>.
Часто .
не используется, когда происходит разрешение, когда другие символы или токены разбивают поток отправки.
Вы должны быть осторожны, если вы абстрагировали .
расширение файла dot (). Вам понадобятся двойные точки, чтобы разрешить filename и разделять расширение точкой. Хорошей привычкой при работе с частями имени файла является использование синтаксиса формального разрешения.
Пример:
%let folder = \Nam1Nam2Nam3Dataset;
%let file = XYZ;
%let ext = csv;
proc import datafile = "amp;folder.amp;file..amp;ext." ...
^^