SASのマクロ変数のサンプルです。
目次
サンプル | マクロ変数(LETステートメント) |
変数の値を囲まない | |
変数の値をダブルコーテーションでくくる | |
変数の値をシングルコーテーションでくくる |
マクロ変数(LETステートメント)
%let 変数名 = 値 |
- マクロ変数の定義は、変数名の前に%letをつけます。
- マクロ変数を使用するときは、変数名の前にアンパサンド(&)をつけます。
- 以下は、sasのマクロ変数の使用のリンクです。https://support.sas.com/documentation/cdl_alternate/ja/mcrolref/67912/HTML/default/n0700fspmubii5n1vecutttwz93n.htm
変数の値を囲まない
%let test1=テスト1です;
DATA _NULL_;
put "&test1"; /* テスト1です */
put "これは&test1"; /* これはテスト1です */
/* put &test1; <<< これはエラーになる */
run;
1行目は、letステートメントでマクロ変数を定義しています。
値をダブルコーテション等で囲っていません。
5行目は、マクロ変数を出力しています。
7行目は、文字列とマクロ変数をダブルコーテーションで括っています。連結して出力します。
マクロ変数の利用時はアンパサンド(&)を使用します。
9行目は、マクロ変数をダブルコーテーションで括っていません。このケースはエラーになります。
変数の値をダブルコーテーションでくくる
%let test1="テスト1です";
DATA _NULL_;
put &test1; /* テスト1です */
/* put "&test1"; <<< これはエラーになる */
run;
1行目は、letステートメントでマクロ変数を定義しています。
値をダブルコーテションで囲っています。
5行目は、マクロ変数を出力しています。ダブルコーテションで括っていません。
7行目は、マクロ変数をダブルコーテーションで括っています。このケースはエラーになります。
変数の値をシングルコーテーションでくくる
%let test1='テスト1です';
DATA _NULL_;
put &test1; /* テスト1です */
put "&test1"; /* 'テスト1です' */
put "これは&test1"; /* これは'テスト1です' */
put 'これは&test1'; /* これは&test1 */
run;
1行目は、letステートメントでマクロ変数を定義しています。
値をシングルコーテションで囲っています。
5行目は、マクロ変数を出力しています。ダブルコーテションで括っていません。
7,9行目は、文字列にシングルコーテションがつきます。
11行目の&test1は文字列としてそのまま出力されます。
関連の記事