
- 學習 VSAM 教程
- VSAM - 首頁
- VSAM - 概述
- VSAM - 元件
- VSAM - 叢集
- VSAM - ESDS
- VSAM - KSDS
- VSAM - RRDS
- VSAM - LDS
- VSAM - 命令
- VSAM - 備用索引
- VSAM - 目錄
- VSAM - 檔案狀態
- VSAM - 面試問題
- VSAM 有用資源
- VSAM - 快速指南
- VSAM - 有用資源
- VSAM - 討論
VSAM - KSDS
KSDS 稱為鍵順序資料集。鍵順序資料集 (KSDS) 比 ESDS 和 RRDS 更復雜,但更有用且用途廣泛。對於 KSDS 資料集,我們必須在 DEFINE CLUSTER 命令中編碼INDEXED。KSDS 叢集包含以下兩個元件:
索引 - KSDS 叢集的索引元件包含叢集中記錄的鍵值的列表,以及指向資料元件中相應記錄的指標。索引元件引用 KSDS 記錄的物理地址。這將每個記錄的鍵與記錄在資料集中的相對位置相關聯。當新增或刪除記錄時,此索引會相應更新。
資料 - KSDS 叢集的資料元件包含實際資料。KSDS 叢集資料元件中的每個記錄都包含一個鍵欄位,該欄位具有相同數量的字元,並且在每個記錄中的相對位置相同。
以下是 KSDS 的主要特徵:
KSDS 資料集中的記錄始終按鍵欄位排序。記錄按鍵的升序排序。
記錄可以順序訪問,也可以直接訪問。
記錄使用鍵進行識別。每個記錄的鍵是記錄中預定義位置的一個欄位。每個鍵在 KSDS 資料集中必須唯一。因此,不允許重複記錄。
插入新記錄時,記錄的邏輯順序取決於鍵欄位的排序順序。
KSDS 資料集中的記錄可以是固定長度或可變長度。
KSDS 可以像其他檔案一樣在COBOL程式中使用。我們將在 JCL 中指定檔名,並且可以在程式內部使用 KSDS 檔案進行處理。在 COBOL 程式中,將檔案組織指定為Indexed,並且您可以對 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))
示例
以下示例顯示瞭如何在 JCL 中使用 IDCAMS 實用程式建立 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)) - /*
如果您在大型機伺服器上執行上述 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 - 叢集模組中提到的相同。
示例
以下示例顯示瞭如何在 JCL 中使用 IDCAMS 實用程式刪除 KSDS 叢集:
//SAMPLE JOB(TESTJCL,XXXXXX),CLASS = A,MSGCLASS = C //STEPNAME EXEC PGM = IDCAMS //SYSPRINT DD SYSOUT = * //SYSIN DD * DELETE MY.VSAM.KSDSFILE CLUSTER /*
如果您在大型機伺服器上執行上述 JCL。它應該以 MAXCC = 0 執行,並且它將刪除 MY.VSAM.KSDSFILE VSAM 叢集。