%LET %SYSFUNC SAS

【SAS】%SYSFUNC関数はデータステップの外でも関数を使えるようにする。その2(%LETステートメント中の挙動)

投稿日:2022年2月14日 更新日:

今回は%SYSFUNC関数について、%LETステートメント中の挙動に着目して解説します。


/* substr */
%let a = substr(123456789, 2, 4);

data data1;
  Id1=&a.;
  output;
run;

  • substrにより、2345を切り取ろうとしている。
  • データステップの外でsubstr関数を使うと動きがおかしい。(?)

/* %sysfunc_substr */
%let a = %sysfunc(substr(123456789, 2, 4));

data data1;
  Id1=&a.;
  output;
run;

  • substrにより、2345を切り取る。
  • %sysfuncにより、関数をデータステップの外で使える。⇒substrの動きが正常になった。

/* %sysfunc_date() */
%let a = %sysfunc(date(),yymmddn8.);

data data1;
  Id1=&a.;
  output;
run;

  • %sysfuncにより、関数をデータステップの外で使える。
  • %sysfuncはSAS日付値⇒日付形式への変換の役割も兼ねている(?)

/* put */
%let a = put(date(),yymmddn8.);

data data1;
  Id1=&a.;
  output;
run;

  • putにより、date()をyymmddn8.形式にする。
  • データステップの外でもput関数が使えている(?)

-%LET, %SYSFUNC, SAS

執筆者:


comment

メールアドレスが公開されることはありません。 ※ が付いている欄は必須項目です

関連記事

【SAS】”nは本来使用できない文字を使用可能にする。

今回は”nについて解説します。(参考:Solved: what the ”  ‘n ” means? – SAS Support Commu …

【SAS】NODUPはソート時に全ての変数における重複を削除する

今回はNODUPについて解説します。 前回NODUPKEYについて解説しました。 【SAS】NODUPKEYはソート時に重複を削除する 今回のNODUPは前回の文法の亜種という感じです。 /*nodu …

【SAS】%MACROはマクロを定義することができる。その2 同名マクロによる再定義【%MEND】

今回は同名マクロによる再定義について解説していきたいと思います。(前回の記事:【SAS】%MACROはマクロを定義することができる。【%MEND】 | ビジネスイッチ (how-to-business …

【SAS】IFステートメントは処理を分岐できる。その4~THEN DO, ELSE DO~【END】

今回はIF文の分岐で、複数の命令を実行する方法について、解説していきます。 【併せて読みたい記事】 【SAS】IFステートメントは処理を分岐できる。その1 | ビジネスイッチ (how-to-busi …

【SAS】DISTINCTは重複をユニークにする。【SQL】

今回はSQL文のDISTINCTについて解説します。 /* Id1 */ data data1; Id1=1111; Id2=1111; Id3=1111; Id4=1111; output; Id1 …