VSAM - ESDS



ESDS 指的是按順序輸入的資料集 (Entry Sequenced Data Set)。按順序輸入的資料集的行為類似於順序檔案組織,但包含更多功能。我們可以直接訪問記錄,並出於安全目的使用密碼。必須在 DEFINE CLUSTER 命令中為 ESDS 資料集編碼NONINDEXED。以下是 ESDS 的主要功能:

  • ESDS 叢集中的記錄按其插入資料集的順序儲存。

  • 記錄透過物理地址引用,該地址稱為相對位元組地址 (RBA)。例如,如果在 ESDS 資料集中,我們有 80 位元組的記錄,則第一條記錄的 RBA 為 0,第二條記錄的 RBA 為 80,第三條記錄的 RBA 為 160,依此類推。

  • 可以透過 RBA 按順序訪問記錄,這稱為定址訪問

  • 記錄按插入順序儲存。新記錄插入到末尾。

  • ESDS 資料集中不允許刪除記錄。但可以將其標記為無效。

  • ESDS 資料集中的記錄可以是固定長度或可變長度。

  • ESDS 是非索引的。ESDS 資料集中不存在鍵,因此它可能包含重複記錄。

  • ESDS 可以像任何其他檔案一樣在 COBOL 程式中使用。我們將在 JCL 中指定檔名,並且可以在程式內使用 ESDS 檔案進行處理。在 COBOL 程式中,將檔案組織指定為順序,並將訪問模式指定為 ESDS 資料集的順序

定義 ESDS 叢集

以下語法顯示了建立 ESDS 叢集時可以使用哪些引數。引數描述與 VSAM - 叢集模組中提到的相同。

DEFINE CLUSTER (NAME(esds-file-name)     -
BLOCKS(number)                           -
VOLUMES(volume-serial)                   -
NONINDEXED                               -
RECSZ(average maximum)                   -
[FREESPACE(CI-Percentage,CA-Percentage)] -
CISZ(number)                             -
[READPW(password)]                       -
[FOR(days)|TO(date)]                     -
[UPDATEPW(password)]                     -
[REUSE / NOREUSE])                       -
DATA                                     -
   (NAME(esds-file-name.data))  

示例

以下示例演示瞭如何使用 IDCAMS 實用程式在 JCL 中建立 ESDS 叢集:

//SAMPLE JOB(TESTJCL,XXXXXX),CLASS = A,MSGCLASS = C
//STEP1  EXEC PGM = IDCAMS
//SYSPRINT DD  SYSOUT = *
//SYSIN    DD  *
   DEFINE CLUSTER (NAME(MY.VSAM.ESDSFILE)  -
   NONINDEXED                              -
   RECSZ(80 80)                            -
   TRACKS(1,1)                             -
   CISZ(4096)                              -                            
   FREESPACE(3 3) )                        -
   DATA (NAME(MY.VSAM.ESDSFILE.DATA))      
/*

如果在大型機伺服器上執行上述 JCL,則應以 MAXCC = 0 執行,並且將建立 MY.VSAM.ESDSFILE VSAM 檔案。

刪除 ESDS 叢集

ESDS 叢集使用 IDCAMS 實用程式刪除。DELETE 命令刪除 VSAM 叢集在目錄中的條目,並可選地刪除檔案,從而釋放物件佔用的空間。

DELETE data-set-name CLUSTER  
[ERASE / NOERASE] 
[FORCE / NOFORCE] 
[PURGE / NOPURGE] 
[SCRATCH / NOSCRATCH]

上述語法顯示了刪除 ESDS 叢集時可以使用哪些引數。引數描述與 VSAM - 叢集模組中提到的相同。

示例

以下示例演示瞭如何使用 IDCAMS 實用程式在 JCL 中刪除 ESDS 叢集:

//SAMPLE JOB(TESTJCL,XXXXXX),CLASS = A,MSGCLASS = C
//STEPNAME EXEC PGM = IDCAMS
//SYSPRINT DD  SYSOUT = *
//SYSIN    DD  *
   DELETE MY.VSAM.ESDSFILE CLUSTER
/*

如果在大型機伺服器上執行上述 JCL,則應以 MAXCC = 0 執行,並且將刪除 MY.VSAM.ESDSFILE VSAM 叢集。

廣告