SASのバージョンを検知する方法について

[OS]ALL
[リリース] 6.12,8.1
[キーワード] SYSVER,SYSVLONG

[質問]

同じプログラムを実行するのですが、一部SAS 6.12とSAS 8.1で違う処理を行わせたいと考えています。どのようにすれば良いでしょうか。

[回答]

自動マクロ変数「&SYSVER」を使用することで、バージョン毎に異なる処理を実現できます。
「&SYSVER」にはバージョン情報が格納されており、V6.12 および V8.1では次の値がセットされています。

< プログラム例 >
  DATA _null_ ;
    %PUT &SYSVER ;
  RUN ;

■ V6.12での実行結果

  1    DATA _null_ ;
  2      %PUT &SYSVER ;
  6.12                   <=== バージョンが出力された例
  3    RUN ;

■ V8.1での実行結果

  1    DATA _null_ ;
  2      %PUT &SYSVER ;
  8.1                    <=== バージョンが出力された例
  3    RUN ;

なお、同じバージョンで「TSレベル」を考慮する場合は、自動マクロ変数「&SYSVLONG」を利用してください。

< プログラム例 >
  DATA _null_ ;
    %PUT &SYSVLONG ;
  RUN ;

■ V6.12での実行結果

  7    DATA _null_ ;
  8      %PUT &SYSVLONG ;
  6.12.0060P042699       <=== バージョン・TSレベルが出力された例
  9    RUN ;

■ V8.1での実行結果

  4    DATA _null_ ;
  5       %PUT &SYSVLONG ;
  8.01.01M0P051500       <=== バージョン・TSレベルが出力された例
  6    RUN ;
※sysvlongで取得される情報はバージョン情報 + TSレベル情報 + P + そのモジュールの作成年月日で構成されます。
「6.12.0060P042699」は「V6.12 TS060 モジュール構成日 1999/4/26」であることを表します。