マクロを書いていて地味に困るのがテンポラリのファイル参照名、ライブラリ参照名を定義することです。ユニークでぶつからない名前を定義するために、小さいコードを書きました。参照するファイルが、SASファイルでも動くようにアンダースコアで始まるようにしています。filename関数でテンポラリの名前を作ると #LN00058 のような名前になります。これだと正しくアサインできないときがあるので、アンダースコア始まりにしています。
それと、マクロの定義を削除するステートメントを良く忘れるのでメモしておきます。%SYSMACDELETE で定義したマクロを削除します。AUTOEXECの中で使うけど最後には後始末しておきたいときに使います。
%macro _uname(); %local n; %let n=%sysfunc(monotonic()); _LN%sysfunc(putn(&n, z5.)) %mend; %put %_uname;
このマクロよく使う。テンポラリのファイル参照名、ライブラリ参照名を作るときに。
返信削除このマクロをSASのEditorで使うと困るのは、マクロの終端を認識しないことだ。%let x=_LN%_uname; という形式で記述するためには、04行目の部分にセミコロンを書いていない。書くと正しく展開されない。なので、Z5.の書式で展開するのをやめてしまおうかと考えている。
返信削除