データセットを複数のディレクトリに分割して保存する

[OS]UNIX
[リリース] 6.12
[キーワード] unix, dataset, multi, partsize

[質問]

UNIX版SASでSASデータセットを作成しましたが、分割してディレクトリに保存するにはどのようにすればよいでしょうか。

[回答]

PARTSIZEシステムオプションで、指定のディレクトリ内で1回当りに使用可能なファイルサイズを指定することにより、SASデータセットを分割して保存することができます。
下記に、ユーザ定義領域とWORK領域に対する指定方法をご紹介します。

■ ユーザ定義領域に対する指定方法
/disk1と/disk2にそれぞれ100GBずつ割り振る場合は次のように指定します。
       libname libref ('/disk1','/disk2')type=partition partsize=100G;
                                               *1            *2

       *1 type=partitionは省略できます。
       *2 partsize=のデフォルト値は500MBです。
       
変更する場合には、単位にG(ギガバイト)、M(メガバイト)、K(キロバイト)を使して値を設定します。 ただし単位を省略すると、K(キロバイト)と判断します。

また、以下のようにも指定できます。

       libname lib1 '/disk1';
       libname lib2 '/disk2';
       libname libcon ('lib1','lib2') type=partition partsize=100G;
                                          *3
	*3 type=partitionは必須です。
       

■ WORK領域に対する指定方法
SASの起動時に使用する環境設定ファイル(config.sas612)に、次のように指定します。
       -work (/disk3,/disk4,/disk5)
       -partsize 200M
       

例)
物理的に/disk1〜/disk10まで各1GB、合計10GB の一時作業領域が使えるディスクがあるとします。
ここで、PARTSIZEにおいて200MBを指定したとします。

(ケース1) 1GBのデータセットをWORK領域に作成する場合
PARTSIZEが200MBであることから、1GB/200MB = 5 となり、/disk1から順番にPARTSIZEで指定したサイズまでファイルを作成して、 次の格納域に作りにいきます。結果、/disk1 〜/disk5まで作成することになります。

(ケース2) 300MB のデータセットをWORK領域に作成する場合
/disk1に200MB、/disk2に100MBのファイルを作成します。

(ケース3) 3GBのデータセットをWORK領域に作成する場合
3GB/200MB = 15 となり、格納域が10を超えているため作成できません。 全体として10GBの容量があるわけですから、PARTSIZEを調整して300MB以上にする必要があります。 作成するデータセットの大きさが毎回同じ場合は、次のように計算して設定することが望ましくなります。
	      作成するデータセットの大きさ / 指定する物理パス数 = PARTSIZE