- 学习 VSAM 教程
- VSAM - 首页
- VSAM - 概述
- VSAM - 组件
- VSAM - 集群
- VSAM - ESDS (入门式顺序数据集)
- VSAM - KSDS (键式顺序数据集)
- VSAM - 相对记录数据集 (RRDS)
- VSAM - LDS (线性数据集)
- VSAM - 命令
- VSAM - 备用索引
- VSAM - 目录
- VSAM - 文件状态
- VSAM - 面试问题
- VSAM 有用资源
- VSAM - 快速指南
- VSAM - 有用资源
- VSAM - 讨论
VSAM - 相对记录数据集 (RRDS)
RRDS 即相对记录数据集。RRDS 集群类似于 ESDS 集群。唯一的区别在于 RRDS 记录通过相对记录号 (RRN) 访问,我们必须在 DEFINE CLUSTER 命令中编码NUMBERED。以下是 RRDS 的主要特性:
相对记录数据集的记录由相对记录号 (RRN)标识,该号码是相对于第一条记录的序列号。
RRDS 允许按编号访问记录,例如记录 1、记录 2 等。这提供了随机访问,并假设应用程序程序有方法获取所需的记录号。
可以顺序地(按相对记录号顺序)或直接地(提供所需记录的相对记录号)访问 RRDS 数据集中的记录。
RRDS 数据集中的记录存储在固定长度的槽中。每个记录都由其槽号引用,编号可以从 1 到数据集中的最大记录数不等。
可以通过将新记录插入空槽来写入 RRDS 中的记录。
可以从 RRDS 集群中删除记录,从而留下空槽。
使用固定长度记录或具有上下文含义的记录号的应用程序可以使用 RRDS 数据集。
RRDS 可像其他文件一样用于COBOL程序中。我们将在 JCL 中指定文件名,并且可以使用 KSDS 文件在程序内进行处理。在 COBOL 程序中,将文件组织指定为RELATIVE,并且可以使用任何访问模式(顺序、随机或动态)与 RRDS 数据集一起使用。
RRDS 文件结构
在 RRDS 文件结构中,空间被划分为固定长度的槽。一个槽可以是完全空闲的,也可以是完全满的。因此,可以将新记录添加到空槽中,也可以从已填充的槽中删除现有记录。我们可以通过提供相对记录号直接访问任何记录。以下示例显示了数据文件的基本结构:
数据组件
相对记录号 | 记录字段 1 | 记录字段 2 |
---|---|---|
1 | 教程 | 要点 |
2 | Mohtashim | M. |
3 | Nishant | Malik |
定义 RRDS 集群
以下语法显示了在创建 RRDS 集群时可以使用哪些参数。
参数说明与 VSAM - 集群模块中提到的相同。
DEFINE CLUSTER (NAME(rrds-file-name) - BLOCKS(number) - VOLUMES(volume-serial) - NUMBERED - RECSZ(average maximum) - [FREESPACE(CI-Percentage,CA-Percentage)] - CISZ(number) - [READPW(password)] - [FOR(days)|TO(date)] - [UPDATEPW(password)] - [REUSE / NOREUSE]) - DATA - (NAME(rrds-file-name.data))
示例
以下示例演示了如何在 JCL 中使用 IDCAMS 实用程序创建 RRDS 集群:
//SAMPLE JOB(TESTJCL,XXXXXX),CLASS = A,MSGCLASS = C //STEP1 EXEC PGM = IDCAMS //SYSPRINT DD SYSOUT = * //SYSIN DD * DEFINE CLUSTER (NAME(MY.VSAM.RRDSFILE) - NUMBERED - RECSZ(80 80) - TRACKS(1,1) - REUSE - FREESPACE(3 3) ) - DATA (NAME(MY.VSAM.RRDSFILE.DATA)) /*
如果在大型机服务器上执行上述 JCL,则应以 MAXCC = 0 执行,并且它将创建 MY.VSAM.RRDSFILE VSAM 文件。
删除 RRDS 集群
使用 IDCAMS 实用程序删除 RRDS 集群。DELETE 命令从目录中删除 VSAM 集群的条目,并可选地删除文件,从而释放对象占用的空间。
DELETE data-set-name CLUSTER [ERASE / NOERASE] [FORCE / NOFORCE] [PURGE / NOPURGE] [SCRATCH / NOSCRATCH]
上述语法显示了在删除 RRDS 集群时可以使用哪些参数。参数说明与 VSAM - 集群模块中提到的相同。
示例
以下示例演示了如何在 JCL 中使用 IDCAMS 实用程序删除 RRDS 集群:
//SAMPLE JOB(TESTJCL,XXXXXX),CLASS = A,MSGCLASS = C //STEPNAME EXEC PGM = IDCAMS //SYSPRINT DD SYSOUT = * //SYSIN DD * DELETE MY.VSAM.RRDSFILE CLUSTER /*
如果在大型机服务器上执行上述 JCL,则应以 MAXCC = 0 执行,并且它将删除 MY.VSAM.RRDSFILE VSAM 集群。