Это четвертый способ добавления текста комментария в SAS? - PullRequest
2 голосов
/ 10 июля 2020

Насколько мне известно, в SAS есть три способа добавления комментариев:

*Any comment text here;
%*Any comment text here;
/*Any comment text here*/

Сегодня днем ​​я как бы рад найти четвертый способ добавить комментарий по совпадению. Это:

comment Any comment text here;

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

/*comment of macro in open code*/
%put This is %sysfunc(date(),e8601da.);
comment %put This is %sysfunc(date(),e8601da.);

/*comment of macro*/
comment %cmprs(test);

/*comment after normal statement*/
data _null_; comment Hi there.;
run;

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

Я думаю, что в SAS достаточно исследований. Я ищу в справочном документе и ничего не нахожу. Мой друг сказал мне, что это могут быть предварительные возможности. Как вы об этом узнали? Поделитесь своей идеей.

1 Ответ

1 голос
/ 10 июля 2020

COMMENT - это утверждение, как и любое другое представленное заявление. По сути, это то же самое, что и *, потому что оператор комментария заканчивается первой точкой с запятой (;). В документации конкретно не указано, что * является псевдонимом для COMMENT, но перечислены * ... ; и /* ... */.

Другой способ прокомментировать несколько операторов, которые также содержат блоки комментариев, - это вложить код внутрь определение макроса.

Пример:

proc print data=sashelp.class;
run;

%macro MY_COMMENT;

* This part contains more statements;
proc print sashelp.cars;
run;
/* And there are comments in both styles of commenting */
%* But inside an uncalled macro everything acts like a giant comment block;

%mend MY_COMMENT;

* return to normal processing;

Для очень больших блоков закомментированного кода во время разработки кода я часто помещаю закомментированную часть в NOSOURCE и SOURCE, чтобы предотвращение засорения журнала.

...

options NOSOURCE;
/*
Big chunk commented out during development to temporarily prevent
rerunning ETL process steps or regenerating already OK reporting code
*/
options SOURCE;

* work on new additional part of process flow here;
...

Другие приемы комментирования

Способ 1 - /**/ пар

Если код постоянно комментируется только комментариями в стиле *;, тогда блоки кода можно легко комментировать и раскомментировать, используя вводный /**/ или /** / и закрывающий /**/.

Без комментариев - вступление представляет собой простой комментарий

/**/  * some code here; /**/

Комментарий - лишний пробел во вступлении приводит к тому, что комментарий закрывается последним */

/** / * some code here; /**/

Способ 2 - /* *; */; переключение

Требуется *; комментарий в качестве первой строки блока, и никаких /* */ комментариев внутри.

Отключить, код блока закомментирован

/*
*intro;
... block ...
*/;

вместо

Включите, код блока не закомментирован

*/*
*intro;
... block ...
*/;

Расширенный редактор

  • Комментарий
    • Выберите блок строк и нажмите Ctrl-/.
      Все строки станут отдельными блоками комментариев в стиле /*original line*/.
  • Раскомментировать
    • Выберите блок строк и нажмите Ctrl-Shift-/.
      Начальный /* и завершающий */ каждой строки будут удалены.

Макропеременная

Используйте переменная флага со значением или * в качестве вводной инструкции для включения или отключения операторов .

%if %sysget(USERNAME)=Richard %then %do;
  %let flag=*;
%end;
%else %do;
  %let flag=;
%end;

&flag. PROC PRINT ...;
&flag. ...;
&flag. ...;
&flag. run;
...