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