
- 學習 VSAM 教程
- VSAM - 首頁
- VSAM - 概述
- VSAM - 元件
- VSAM - 叢集
- VSAM - ESDS
- VSAM - KSDS
- VSAM - RRDS
- VSAM - LDS
- VSAM - 命令
- VSAM - 備用索引
- VSAM - 目錄
- VSAM - 檔案狀態
- VSAM - 面試問題
- VSAM 有用資源
- VSAM - 快速指南
- VSAM - 有用資源
- VSAM - 討論
VSAM - 備用索引
備用索引是在 KSDS/ESDS 資料集的基礎索引之外建立的附加索引。備用索引允許使用多個鍵來訪問記錄。備用索引的鍵可以是非唯一鍵,可以存在重複。
備用索引的建立
建立備用索引使用以下步驟:
- 定義備用索引
- 定義路徑
- 構建索引
定義備用索引
備用索引使用 **DEFINE AIX** 命令定義。
DEFINE AIX - (NAME(alternate-index-name) - RELATE(vsam-file-name) - CISZ(number) - FREESPACE(CI-Percentage,CA-Percentage) - KEYS(length offset) - NONUNIQUEKEY / UNIQUEKEY - UPGRADE / NOUPGRADE - RECORDSIZE(average maximum)) - DATA - (NAME(vsam-file-name.data)) - INDEX - (NAME(vsam-file-name.index))
以上語法顯示了定義備用索引時使用的引數。我們在“定義叢集模組”中已經討論了一些引數,在定義備用索引時使用了一些新的引數,我們將在本文中討論這些引數:
序號 | 引數及描述 |
---|---|
1 | DEFINE AIX Define AIX 命令用於定義備用索引並指定其元件的引數屬性。 |
2 | NAME NAME 指定備用索引的名稱。 |
3 | RELATE RELATE 指定為其建立備用索引的 VSAM 叢集的名稱。 |
4 | NONUNIQUEKEY / UNIQUEKEY UNIQUEKEY 指定備用索引是唯一的,NONUNIQUEKEY 指定可能存在重複。 |
5 | UPGRADE / NOUPGRADE UPGRADE 指定如果基本叢集被修改則應修改備用索引,NOUPGRADE 指定如果基本叢集被修改則應保留備用索引。 |
示例
以下是一個基本的示例,演示如何在 JCL 中定義備用索引:
//SAMPLE JOB(TESTJCL,XXXXXX),CLASS = A,MSGCLASS = C //STEP1 EXEC PGM = IDCAMS //SYSPRINT DD SYSOUT = * //SYSIN DD * DEFINE AIX (NAME(MY.VSAM.KSDSAIX) - RELATE(MY.VSAM.KSDSFILE) - CISZ(4096) - FREESPACE(20,20) - KEYS(20,7) - NONUNIQUEKEY - UPGRADE - RECORDSIZE(80,80)) - DATA(NAME(MY.VSAM.KSDSAIX.DATA)) - INDEX(NAME(MY.VSAM.KSDSAIX.INDEX)) /*
如果您在大型機伺服器上執行上述 JCL,它應該以 MAXCC = 0 執行,並且將建立 MY.VSAM.KSDSAIX 備用索引。
定義路徑
定義路徑用於將備用索引與基本叢集關聯。在定義路徑時,我們指定路徑的名稱以及與此路徑相關的備用索引。
DEFINE PATH - NAME(alternate-index-path-name) - PATHENTRY(alternate-index-name))
以上語法有兩個引數。NAME 用於指定備用索引路徑名稱,PATHENTRY 用於指定備用索引名稱。
示例
以下是在 JCL 中定義路徑的基本示例:
//SAMPLE JOB(TESTJCL,XXXXXX),CLASS = A,MSGCLASS = C //STEP1 EXEC PGM = IDCAMS //SYSPRINT DD SYSOUT = * //SYSIN DD * DEFINE PATH - NAME(MY.VSAM.KSDSAIX.PATH) - PATHENTRY(MY.VSAM.KSDSAIX)) /*
如果您在大型機伺服器上執行上述 JCL,它應該以 MAXCC = 0 執行,並且將在備用索引與基本叢集之間建立路徑。
構建索引
BLDINDEX 命令用於構建備用索引。BLDINDEX 讀取 VSAM 索引資料集(或基本叢集)中的所有記錄,並提取構建備用索引所需的資料。
BLDINDEX - INDATASET(vsam-cluster-name) - OUTDATASET(alternate-index-name))
以上語法有兩個引數。INDATASET 用於指定 VSAM 叢集名稱,OUTDATASET 用於指定備用索引名稱。
示例
以下是在 JCL 中構建索引的基本示例:
//SAMPLE JOB(TESTJCL,XXXXXX),CLASS = A,MSGCLASS = C //STEP1 EXEC PGM = IDCAMS //SYSPRINT DD SYSOUT = * //SYSIN DD * BLDINDEX - INDATASET(MY.VSAM.KSDSFILE) - OUTDATASET(MY.VSAM.KSDSAIX)) /*
如果您在大型機伺服器上執行上述 JCL,它應該以 MAXCC = 0 執行,並且將構建索引。