11.2DASD空きスペースの取得(LSPACE)

By 神居 - Posted: 2010/12/09 Last updated: 2010/12/09 - Leave a Comment

ボリュームにどのくらいの空きスペースがあるかを知りたい場合は、OBTAINマクロで空きスペース情報を管理するDSCBや、CVAFでVTOCインデックスデータセットの空きスペースマップを読み込み、それを解析することもできます。ボリューム内の各空きトラックの位置やサイズを詳細に抽出して、より細かな空きスペース状況を知る必要があれば、DSCB5やVTOCインデックスデータセットへのアクセスは避けられませんが、ISPF3.4のVオプションのように、空きスペースの総量や空きエクステント数などの要約情報でよければもっと簡単な方法で入手できます。


ボリュームの空きスペース量の要約を求める

LSPACEマクロを使用するには求めるボリュームのUCBアドレスもしくはUCBのコピーが必要です。これはUCBLOOKもしくはUCBSCANマクロで入手・作成ができます。LSPACEマクロはAPF許可不要ですが、UCBLOOKマクロおよびUCBSCANでのUCBアドレスの取得はAPF許可プログラムでなければなりません。非APFである一般プログラムの場合は、UCBSCANマクロでシステムのUCBのコピーを自プログラム内に作成して、そのアドレスを指定することができます。
LSPACEは空きスペースの要約をメッセージテキストの形で返します。内容は次の通りです。

先頭から、空きシリンダー総数、追加の空きトラック数、空きエクステント数、最大の空きエクステントのシリンダー数、最大の空きエクステントの追加のトラック数、の順に5つの情報が返ります。これはISPF3.4のVオプション(VTOC Summary Information)に示される、Free Space情報と同じです。

標準形式では空き容量は9999までしか表示できません。3390-9型以上の大容量ボリュームでは4桁では足りないので拡張形式のメッセージで返答させる必要があります。もちろん3390-3などの9999シリンダー以下の容量のボリュームでも利用できます。返答される項目は標準形式と同じで、数値の桁数が4から6桁に増えているだけです。
その他、DATAパラメーターを使用して、空き情報をメッセージではなくバイナリーのデータで返答させることもできます。返答域は36バイトでLSPACEマクロのMF=(D,DATA)でマッピングできます。メッセージテキストによる返答よりも追加の情報(VTOCの空きDSCB数やフラグメント化指標値など)が返ります。空きスペース量を計算処理するような場合はDATAでの返答が便利でしょう。
サンプルでは単一のボリュームに対しての空きスペース情報を求めていますが、UCBSCANはシステム内のデバイスのUCBを順次に戻すことができるので、複数のDASDボリュームの空きスペースをリストアップするようなプログラムに応用できます。

MSPとVOS3でも標準形式の返答であればLSPACEはサポートされています。ただしマクロ命令は提供されていないので、SVC命令を直接コーディングすることになります。

このコードはMVSでも有効ですが、MVSの場合はLSPACEマクロを使うべきです。なおMVSのLSPACEマクロの展開コードは後年になって新たにサポートされたもので、MSPやVOS3では使えません。

関連マニュアル:

  • MVS:z/OS DFSMSdfp 拡張サービス(LSPACEマクロ)
  • z/OS MVS プログラミング: アセンブラー・サービスガイド(UCBSCANマクロ)
  • z/OS MVS プログラミング: アセンブラー・サービス解説書 第2巻(UCBSCANマクロ)
  • Posted in 中級編 • • Top Of Page