我輩はブロガーではない。ネタもまだない

SASとかDelphiあたりの人様の役に立たないネタを提供します

SAS9.4 TS1M5, M6のhotfix

以前、SASで開発したアプリケーションでOBSが落ちてしまっていたことがあって、色々検証した結果、SAS9.4 TS1M5の不具合(M4まではOKだった)で、半年後、Hotfixが提供されたのでメデタシメデタシと思っていたのですが、なんだかhotfixがインストールされていないのにその現象が発生しない環境が。。。

何度もインストールしなおしたり、hotfixインストールしたり検証したのですが、なんてことはない、hotfixが新しくなって番号が変わっていたためだったようです。

ちなみに、その不具合の情報はこちら。
63508 - An application that is executed multiple times ends with an exception

ものすごく要約すると、
「sortしたデータセットをsclでwhereして、nlobsfを取得するとたまにエラーとなって落ちる」
という問題です。


再現コードは以下。

まず、SCLプログラムから

/* ファイルはTEMP.TEST.TEST.SCLとする。保存後、要コンパイル */
init:
  rc=rc;
  dsid=open('WORK.test','I'); /* WORK.TESTを読み取りモードで開く */
  put dsid=;
  if dsid>0 then do;
    do i=1 to 2; /* ループ2回めでWTABORT */
      rc1=where(dsid);
      rc2=where(dsid,'X='||strip(put(i,best.))); /* whereで抽出 */
      put rc1=;
      put rc2=;
      nobs=attrn(dsid,'NLOBSF'); /* 抽出したOBS数を取得 */
      put nobs=;
    end;
    rc=close(dsid);
  end;
return;
main:return;
term:return;

続いて、上記のSCLをBaseSASから呼ぶコード

libname temp 'c:\temp';
data temp.test;
  do X=1 to 100;
    output;
  end;
run;

proc sort data=Temp.test
          out =WORK.test;
  by X;
run;

proc display c=temp.test.test.scl;
run;

このsasプログラムを実行すると、1~50回でSASが異常終了します。


そして、以下がHotfix情報
M6用:
Hot Fixes for Base SAS 9.4_M6

M5用:
Hot Fixes for Base SAS 9.4_M5

アクセスすればわかると思いますが、とてもじゃないけど全部追いきれません。

  • このhotfix Aを適用する場合は、Bも適用する必要がある

 ↓ Bにリンク

  • このhotfix Bを適用する場合は、AとCも適用する必要がある

 ↓ Cにリンク

  • このhotfix Cを適用する場合は、Dも適用する必要がある

 ↓ Dにリンク

  • このhotfix Dを適用する場合は、AとBも適用する必要がある

こんな感じですよ。

結構致命的だと思うのですが(シチュエーション的に十分ありえる)、備忘を兼ねてWindows用のものだけをまとめてみました。
(今後変更になる可能性があるので、ファイルへの直リンクではなく、hotfix idへのリンクになっています。)

M6用
D9T043:http://ftp.sas.com/techsup/download/hotfix/HF2/D9T.html#63508
D9T046:http://ftp.sas.com/techsup/download/hotfix/HF2/D9T.html#D9T046
D9T029:http://ftp.sas.com/techsup/download/hotfix/HF2/D9T.html#D9T029
D9T041:http://ftp.sas.com/techsup/download/hotfix/HF2/D9T.html#D9T041
D9T042:http://ftp.sas.com/techsup/download/hotfix/HF2/D9T.html#D9T042
D9T036:http://ftp.sas.com/techsup/download/hotfix/HF2/D9T.html#D9T036
E8Y002:http://ftp.sas.com/techsup/download/hotfix/HF2/E8Y.html#E8Y002
E2G005:http://ftp.sas.com/techsup/download/hotfix/HF2/E2G.html#E2G005
E5Q002:http://ftp.sas.com/techsup/download/hotfix/HF2/E5Q.html#E5Q002
E9Y001:http://ftp.sas.com/techsup/download/hotfix/HF2/E9Y.html#E9Y001
F6B001:http://ftp.sas.com/techsup/download/hotfix/HF2/F6B.html#F6B001
D9T044:http://ftp.sas.com/techsup/download/hotfix/HF2/D9T.html#D9T044
F8U001:http://ftp.sas.com/techsup/download/hotfix/HF2/F8U.html#F8U001
F8T001:http://ftp.sas.com/techsup/download/hotfix/HF2/F8T.html#F8T001


M5用
B6Q079:http://ftp.sas.com/techsup/download/hotfix/HF2/B6Q.html#63508
B6Q074:http://ftp.sas.com/techsup/download/hotfix/HF2/B6Q.html#B6Q074
SAS/ACCESS Interfaceの関連hoffixが多数。これは必要に応じて)
B6Q052:http://ftp.sas.com/techsup/download/hotfix/HF2/B6Q.html#B6Q052
B6Q063:http://ftp.sas.com/techsup/download/hotfix/HF2/B6Q.html#B6Q063
B6Q048:http://ftp.sas.com/techsup/download/hotfix/HF2/B6Q.html#B6Q048
B6Q076:http://ftp.sas.com/techsup/download/hotfix/HF2/B6Q.html#B6Q076
D9I002:http://ftp.sas.com/techsup/download/hotfix/HF2/D9I.html#D9I002
B6Q069:http://ftp.sas.com/techsup/download/hotfix/HF2/B6Q.html#B6Q069
B6Q050:http://ftp.sas.com/techsup/download/hotfix/HF2/B6Q.html#B6Q050
B6Q067:http://ftp.sas.com/techsup/download/hotfix/HF2/B6Q.html#B6Q067
C1S005:http://ftp.sas.com/techsup/download/hotfix/HF2/C1S.html#C1S005
E2E001:http://ftp.sas.com/techsup/download/hotfix/HF2/E2E.html#E2E001

これでOKだと思います。