ラベル マクロ: &SYSVER の投稿を表示しています。 すべての投稿を表示
ラベル マクロ: &SYSVER の投稿を表示しています。 すべての投稿を表示

2016年3月24日木曜日

SASのバージョンを取得する方法



SASのバージョン情報が格納されている3つのマクロ変数を紹介。
自宅で遊んでるSAS OnDemandのバージョン情報を出してみます。

   %put  &SYSVER;         *** ⇒ 9.4 ;
   %put  &SYSVLONG;    *** ⇒ 9.04.01M3P062415 ;
   %put  &SYSVLONG4;  *** ⇒ 9.04.01M3P06242015 ;


「SYSVLONG」「SYSVLONG4」 の方がメンテナンスレベル等、詳細な情報が格納されてます。


ちょっと前、「顧客にSASプログラムを納品したらERRORが出て動かないってクレームが来たよ。。」という話しを聞きました。

「顧客とその会社では同じSAS9.4を使ってて、なんでだろうねー」ってとこで話しは終わっちゃいましたが、メンテナンスレベルとかが異なってたのかもですね。
(上の例では 「9.04.01M3P062415」 なのでメンテナンスレベル3)

実は同じSAS9.4でもマイナーバージョンアップが行われて新機能が追加されたりするので、上のような事が起こり得るわけです。
他にもHotfix(不具合に対する修正プログラム)を当ててるかどうかっても挙動に影響します。


また、SAS/STATなどプロダクト毎にカスタムバージョンがあるのでその辺も確認しておく必要があるかと思います。
以下プロシジャでプロダクト毎のバージョンをログに表示できます。

  proc product_status;
  run;

2015年7月22日水曜日

PUTステートメントで特定の文字を繰り返す小技


小技というほどでもないかも。
まず以下はログにSASバージョンと日時を表示させるプログラムです。

data _NULL_;
   put "==================================================";
   put " SAS Version  : &SYSVER";
   put " 現在日時      : %sysfunc(datetime(),nldatm20)";
   put "==================================================";
run;

ログ

==================================================
 SAS Version  : 9.4
 現在日時      : 2015/07/22 21:12:00
==================================================

(ちなみに自動マクロ変数 「&SYSVER」 でSASバージョンが取得できます。)


ここで、PUTステートメントを以下の青字部分のように置き換えることができます。

data _NULL_;
   put 50 * "=";
   put " SAS Version : &SYSVER";
   put " 現在日時     : %sysfunc(datetime(),nldatm20)";
   put 50 * "=";
run;


「put 50 * "="」で、「=」という文字を50回繰り返し出力しています。


構文はこんな感じ。

  PUT  直後の文字を繰り返す回数  *  "文字";