DASDタイプ別最適化ブロックサイズ
DASDにデータセットを作成する際は、トラックに無駄なくレコードを詰めて、デッドスペースがなるべくできないようにする方がよいです。データ管理の扱う最大ブロック長は32760バイトですが、3390型DISKであれば最大トラック長は56664バイトです。大きいブロックの方がよい、と言って32760バイトでブロック長を決めてしまうと、1トラックに1ブロックしか入らないので約24000バイトもの使われない無駄スペースができてしまいます。そうなると本来なら10cylの大きさで済むデータセットが、倍近い16から18cylの大きさを必要としたりすることになってしまいます。
固定長レコードの場合、論理レコード長に応じた最適なブロックサイズと言うものがあります。可変長レコードの場合はDASDの1トラックに2ブロック入れられる最も大きなサイズとなります。MVS(z/OS)の場合、現在では自分で計算しなくても、ブロック長を0としたり省略すればOS側でレコード形式とレコード長に応じた最適なブロックサイズを計算してくれるのでずいぶん便利になりました。しかしMSPとVOS3では今でも自分でサイズを指定する必要がある、ということは変わっていないのでしょう。
ユーザーデータセットではさまざまな長さの論理レコードが使われますが、ソースプログラムやJCL用データセットに使われるLRECL=80、プリントデータ用によく使われるLRECL=121および133について最適なブロックサイズを表にまとめてみました。これら以外の長さの場合、固定長レコードであれば「 27998(または23476) / レコード長 * レコード長 」で計算してみてください。要はレコード長で割り切れるブロックサイズを限りなく27998(または23476)に近づければいいのです。可変長レコードの場合は、レコード長に関係なく27998(または23476)です。なお、最適ブロックサイズを超えたとしても(最大で32760)トラック上にデッドスペースが出来るだけでI/Oエラーにはなりません。
トラック長 | ユーザー・データ長 | |
3390型DISK | 58,786byte | 56,664byte |
3380型DISK | 47,968byte | 47,476byte |
3390型DISK:2ブロック書ける最大ブロック長=27998(RECFM=VB) | |
---|---|
LRECL=80 | 最適ブロック長=27920 |
LRECL=121 | 最適ブロック長=27951 |
LRECL=133 | 最適ブロック長=27930 |
3380型DISK:2ブロック書ける最大ブロック長=23476(RECFM=VB) | |
---|---|
LRECL=80 | 最適ブロック長=23440 |
LRECL=121 | 最適ブロック長=23474 |
LRECL=133 | 最適ブロック長=23408 |