Список специальных символов в макросах SAS

Я хотел бы знать, какие символы безопасны для любого использования в SAS макросы.

Так что я подразумеваю здесь под специальными символами любой символ (или группу символов), который может играть определенную роль в SAS в любом контексте. Меня не интересуют ключевые слова (сделанные из a-z1-9 символы).

Например =^=;%,@ являются особенными (не уверен, если @ на самом деле используется в SAS, но он используется для doc, поэтому все еще считается параметром, который не является "безопасным для всех целей").

Но что насчет $!~§{}° так далее?

Это должно включать символы, которые являются особенными в PROC SQL также.

Я хотел бы использовать некоторые из этих символов и дать им особое значение в моем коде, но я бы предпочел не вступать в конфликт с каким-либо существующим использованием (меня особенно интересует ~).

4 ответа

Немного общей справки:

Я думаю, что подавляющее большинство символов на стандартной английской клавиатуре так или иначе используются на языке SAS.

Чтобы обратиться к вашим примерам:

  • $ Используется в именах форматов, выражениях put / input, определениях регулярных выражений...
  • ! или оператор в некоторых средах
  • ~ оператор "не"
  • § Не знаю, насколько я знаю
  • {} Может использоваться для ссылок и определений массива шагов данных
  • ° Не знаю, насколько я знаю

Ничто из вышеперечисленного не делает ничего особенного в макро-контексте, как Том уже ясно дал понять в своем ответе.

Может быть, операторы SAS в выражениях могут помочь вам ~, глядя на таблицы
Операторы сравнения и
Логические Операторы

Основными триггерами в макросе являются: & а также % которые используются для запуска ссылок на макропеременные и операторов макросов, функций или вызовов макросов.

; (точка с запятой) используется в коде макроса (как в коде SAS) для указания конца оператора.

Для передачи параметров в макропараметры вам в основном нужно беспокоиться о , (Запятая). Но вы также хотите избежать несбалансированного (), Вы должны избегать использования = при передаче значений параметров по позиции.

Вы можете защитить их, добавив кавычки или дополнительные () вокруг значений. Но эти символы становятся частью передаваемого значения. Вы можете использовать макрос цитирования, чтобы защитить их.

 %mymac(parm1='1,200',parm2=(1,200),parm3=%str(1,200),parm4="a(b")

Знаки равенства могут быть включены без кавычек, если ваш вызов использует именованные параметры.

 %mymac(parm1=a=b)

В дополнение к предыдущим ответам;

  • % также используется для включения файлов в вашу программу. % включает

  • Использование специальных символов может вызвать застревание кода в цикле из-за несбалансированных кавычек. SAS Примечание.

Если вы столкнулись с этим, просто отправьте волшебную строку ниже:

*';*";*/;run;
Другие вопросы по тегам