%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】DATETIME関数はSAS日時値を取得する。

今回はDATETIME関数について解説します。 /* datetime_1 */ data data1; aaaa = datetime(); run; datetime()はSAS時間値を取得する。 …

【SAS】INDEXC関数は文字列から特定の文字を探して位置を返す。

今回はINDEXC関数について解説します。 data data1; Id1=”1111″; Id2=”1111″; Id3=”1111″; output; Id1=”2111″; Id2=”2111″ …

【SAS】TRIM関数は文字列の連結時に末尾のスペースを除去できる。

今回はTRIM関数について解説します。 /* trim */ data data1; Id1=1111; Char1=”AA AA”; output; Id1=2222; Char1=” BBBB”; …

【SAS】SQLにおける複数テーブルの結合 その2【INNER JOIN】

今回も複数テーブルの結合について解説します。 前回の記事、【SAS】SQLにおける複数テーブルの結合 その1【UNION ALL】 | ビジネスイッチ (how-to-business.com)の続き …

【SAS】INPUTは文字型を数値型に変換する

今回はINPUTについて解説します。 /*8桁*/ data work.a; a = input(“20061228”, 8.); run; 文字型⇒数値型への変換はinputを使う。文字型&#822 …