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 Structure

定義 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 叢集。

廣告