多量データの行列演算テクニック

[OS]MVS, F4, VOS3
[リリース] 6.07, 6.08, 6.09E
[キーワード] iml, worksize=, large, data, system, option, memsize

[質問]

メインフレーム版のSAS上でSAS/IMLを使用して、大きな行列(たとえば1000*1000)を処理できますか。

[回答]

可能です。SAS System 5ではSAS自体が16メガバイト以下の仮想記憶域しかサポートしていなかったため、このような大きな行列を処理できませんでした。
しかし、SAS System 6からは16メガバイト以上の仮想記憶域(拡張アドレス空間)もサポートしているので、問題なく処理することができます。
なお、拡張アドレス空間を利用するには、SAS起動時にSASシステムオプションのMEMSIZE=を指定して、SASが使用できる最大仮想記憶サイズを設定してください。
以下にSASを起動して、IMLプロシジャで1000*1000の行列を確保する例を示します。

●TSO(TSS)環境の場合

    SAS607 OP('MEMSIZE=20M')
    PROC IML WORKSIZE=10000000;
      X=J(1000,1000,1);

●バッチ環境の場合

    //SAS607 EXEC SAS607,OPTIONS='MEMSIZE=20M'
    //SYSIN  DD *
    PROC IML WORKSIZE=10000000;
      X=J(1000,1000,1);