Vsam-ksds
VSAM-KSDS
KSDSはキーシーケンスデータセットとして知られています。 キーシーケンスデータセット(KSDS)は、ESDSやRRDSよりも複雑ですが、より便利で多用途です。 KSDSデータセットのDEFINE CLUSTERコマンド内に INDEXED をコーディングする必要があります。 KSDSクラスタは、次の2つのコンポーネントで構成されています-
- インデックス-KSDSクラスターのインデックスコンポーネントには、クラスター内のレコードのキー値のリストと、データコンポーネント内の対応するレコードへのポインターが含まれています。 インデックスコンポーネントは、KSDSレコードの物理アドレスを参照します。 これは、各レコードのキーを、データセット内のレコードの相対位置に関連付けます。 レコードが追加または削除されると、それに応じてこのインデックスが更新されます。
- データ-KSDSクラスターのデータコンポーネントには、実際のデータが含まれています。 KSDSクラスターのデータコンポーネントの各レコードには、同じ文字数のキーフィールドが含まれ、各レコードの同じ相対位置にあります。
KSDSの主要な機能は次のとおりです-
- KSDSデータセット内のレコードは、常にキーフィールドでソートされたままです。 レコードはキーごとに昇順、照合順に保存されます。
- レコードは連続してアクセスでき、直接アクセスすることもできます。
- レコードはキーを使用して識別されます。 各レコードのキーは、レコード内の事前定義された位置にあるフィールドです。 各キーは、KSDSデータセット内で一意である必要があります。 したがって、レコードの複製はできません。
- 新しいレコードが挿入されると、レコードの論理的な順序はキーフィールドの照合順序に依存します。
- KSDSデータセットのレコードは、固定長または可変長にすることができます。
- KSDSは、他のファイルと同様に COBOL プログラムで使用できます。 JCLでファイル名を指定し、KSDSファイルを使用してプログラム内で処理できます。 COBOLプログラムでは、ファイル構成を*インデックス付き*として指定し、KSDSデータセットで任意のアクセスモード*(シーケンシャル、ランダム、またはダイナミック)*を使用できます。
KSDSファイル構造
特定のレコードを検索するために、一意のキー値を指定します。 キー値はインデックスコンポーネントで検索されます。 キーが見つかると、データコンポーネントを参照する対応するメモリアドレスが取得されます。 メモリコンポーネントから、データコンポーネントに保存されている実際のデータを取得できます。 次の例は、インデックスとデータファイルの基本構造を示しています-
KSDSクラスターの定義
次の構文は、KSDSクラスターの作成中に使用できるパラメーターを示しています。
パラメーターの説明は、VSAM-クラスターモジュールで説明したものと同じです。
DEFINE CLUSTER (NAME(ksds-file-name) -
BLOCKS(number) -
VOLUMES(volume-serial) -
INDEXED -
KEYS(length offset) -
RECSZ(average maximum) -
[FREESPACE(CI-Percentage,CA-Percentage)] -
CISZ(number) -
[READPW(password)] -
[FOR(days)|TO(date)] -
[UPDATEPW(password)] -
[REUSE/NOREUSE]) -
DATA -
(NAME(ksds-file-name.data)) -
INDEX -
(NAME(ksds-file-name.index))
例
次の例は、IDCAMSユーティリティを使用してJCLでKSDSクラスターを作成する方法を示しています-
//SAMPLE JOB(TESTJCL,XXXXXX),CLASS = A,MSGCLASS = C
//STEP1 EXEC PGM = IDCAMS
//SYSPRINT DD SYSOUT = *
//SYSIN DD *
DEFINE CLUSTER (NAME(MY.VSAM.KSDSFILE) -
INDEXED -
KEYS(6 1) -
RECSZ(80 80) -
TRACKS(1,1) -
CISZ(4096) -
FREESPACE(3 3) ) -
DATA (NAME(MY.VSAM.KSDSFILE.DATA)) -
INDEX (NAME(MY.VSAM.KSDSFILE.INDEX)) -
/*
Mainframesサーバーで上記のJCLを実行する場合。 MAXCC = 0で実行し、MY.VSAM.KSDSFILE VSAMファイルを作成します。
KSDSクラスターの削除
KSDSクラスターは、IDCAMSユーティリティを使用して削除されます。 DELETEコマンドは、カタログからVSAMクラスターのエントリーを削除し、オプションでファイルを削除することにより、オブジェクトが占有するスペースを解放します。
DELETE data-set-name CLUSTER
[ERASE/NOERASE]
[FORCE/NOFORCE]
[PURGE/NOPURGE]
[SCRATCH/NOSCRATCH]
上記の構文は、KSDSクラスターの削除中に使用できるパラメーターを示しています。 パラメーターの説明は、VSAM-クラスターモジュールで説明したものと同じです。
例
次の例は、IDCAMSユーティリティを使用してJCLでKSDSクラスターを削除する方法を示しています-
//SAMPLE JOB(TESTJCL,XXXXXX),CLASS = A,MSGCLASS = C
//STEPNAME EXEC PGM = IDCAMS
//SYSPRINT DD SYSOUT = *
//SYSIN DD *
DELETE MY.VSAM.KSDSFILE CLUSTER
/*
Mainframesサーバーで上記のJCLを実行する場合。 MAXCC = 0で実行され、MY.VSAM.KSDSFILE VSAMクラスターが削除されます。