制御インターバルへのアクセス

制御インターバルは、ACB MACRF パラメーター および RPL (または GENCB) OPTCD パラメーターによって完全に指定されます。 VSAM が入出力バッファーを管理している状態で制御インターバル・アクセス用の データ・セットをオープンする準備をするには、次のように指定します。
   ACB      MACRF=(CNV,...),...

NUB (ユーザー・バッファリングなし) および NCI (標準制御インターバル・アクセス) を 使用して、MACRF パラメーターでデータ・セットがキー・アクセスとアドレス・アクセス および制御インターバル・アクセス用にオープンされるように指定します。 たとえば、MACRF=(CNV, KEY, SKP, DIR, SEQ, NUB, NCI, OUT) は、サブパラメーターの有効な組み合わせです。

次のようにコーディングすることにより、制御インターバル・アクセスに対する 特定の要求を定義します。
   RPL      OPTCD=(CNV,...),...

通常、ユーザー・バッファリングなしを指定した制御インターバル・アクセス は、キー・アクセスおよびアドレス・アクセスと同じ自由度および制限を持ちます。 制御インターバルは、同期または非同期にすることができ、作業域に 移動された (OPTCD=MVE) または VSAM の入出力バッファーに 残された (OPTCD=LOC) 制御インターバルの内容を持つことができ、 一連の要求パラメーター・リスト (OPTCD=LOC が指定されている場合を除く) によって 定義できます。 ユーザー・バッファー方式が指定されていない順次 GET では、RPL 用の既存のバッファーにさらに追加され、先読み処理が可能になります。

ERASE を除き、すべての要求マクロ (GET、PUT、POINT、CHECK、および ENDREQ) は、通常の制御インターバル・アクセスに使用することができます。 制御インターバルの内容を更新するには、更新の内容を (ユーザー・バッファリング なしを使用して) 前もって検索しておく必要があります。 OPTCD=LOC を指定して制御インターバルの内容を変更することはできません。

直接アクセスと順次アクセスの両方は、制御インターバル・アクセスと一緒に 使用することができますが、スキップ順次アクセスはそれができません。 つまり、OPTCD=(CNV,DIR) または (CNV,SEQ) を指定しても、 OPTCD=(CNV,SKP) は指定しないでください。

順次アクセスでは、CIDF が 0 によって埋められた制御インターバルを 検索しようとするとき、または最後のものを超えて制御インターバルを 検索しようとするときにそのような制御インターバルがない場合、VSAM は EODAD 出口を 取ります。 そのような CIDF がない制御インターバルは、データを含まないか未使用のスペースを 含み、ソフトウェアのファイル終わりを表すために使用されます。 ただし、VSAM 制御インターバル処理は、ソフトウェアのファイル終わりを 検索するのに、直接 GET または POINT および 順次 GET を使用することを妨げるものではありません。 制御インターバル・アクセスを使用しての直接要求のための検索引数 は、望ましい内容を持つ制御インターバルの RBA です。

RPL (または GENCB) パラメーター AREA および AREALEN は 、OPTCD=MVE または LOC に関連する制御インターバル・アクセスでは、キー・アクセス およびアドレス・アクセスの場合と同じ用途を持ちます。 OPTCD=MVE では、AREA は、VSAM が制御インターバルの内容を移動する区域 のアドレスを示します。 OPTCD=LOC では、AREA は、制御インターバルの内容を含む入出力バッファー のアドレスを VSAM が書き込む区域のアドレスを示します。

制御インターバル・アクセスを使用して、入力順データ・セットをロードできます。 空の入力順データ・セットをオープンする場合、VSAM では順次ストレージのみを 使用できます。 つまり、OPTCD=(CNV,SEQ,NUP) を指定して、PUT のみを発行します。 OPTCD=NUP を指定した PUT は、次の使用可能な制御インターバルに (データ・セット の末尾で) 情報を保管します。

改良制御インターバル・アクセスを使用してデータ・セットをロードまたは拡張することはできません。 VSAM も、通常の制御インターバル・アクセスを通じて固定長または可変長 RRDS を拡張することはできません。

制御インターバルの内容を次の 2 つの方法のいずれかで更新します。
  • OPTCD=UPD を使用して内容を検索し、元どおり保管します。 この場合、制御インターバルの RBA は、制御インターバルについての GET 中に 指定されます。
  • 内容を検索することなく、OPTCD=UPD を使用して新規の内容を制御インターバル に保管します。 (ユーザー・バッファリングの場合は UBF を指定する必要が あります。) PUT に先行して GET (または OPTCD=NUP を指定した GET) が ないので、RPL によってアドレスによる引数として 制御インターバルの RBA を指定する必要があります。