VSAM(VirtualStorageAccessMethod)文件主要有以下几种形式:
1.键顺序文件KSDS
2.输入顺序文件ESDS
3.相对记录文件RRDS
4.线性文件LDSVSAM文件结构:
VSAM数据集中的数据除线性数据集外,都被组成记录(逻辑记录)。逻辑记录是用户访问
数据集的单位。·
CI(ControlInterval):
一个CI是直接访问存储设备的一片连续区域,用于存储数据记录及其控制信息。当从直接存储设备上读取一个记录时,包含要读的记录的整个CI都被读到虚存的VSAMI/O缓冲中,然后用户要读的记录才从VSAM缓冲传输到用户定义的工作区。一个VSAM数据集在一个卷上可以占用最多119到123个Extent,或者占用4,294,967,
296个字节。
每一个CI含有如下信息:
逻辑记录:每一个CI中可能包含多个逻辑记录。
自由空间:每一个CI中可能含有一定的自由空间,用于插入新的记录。
控制信息:主要为RDF和CIDF,RDF描述每一个记录的信息,而CIDF则描述整个CI的信息。
注意:在线性数据集中,CI全部是数据,无控制信息。
CA(Control Area):
VSAM数据集中的多个CI成组为直接访问存储设备中的一片连续区域称之为CA,一个VSAM数据集由一个以上的CA组成。CA最大为一个柱面,最小必须是一个磁道。在定义数据集时可以用SPANNED参数指定记录可以跨多个CI。
ESDS:
类似顺序文件。其记录长度可固定也可不固定,新记录只能加在数据集的末尾,已存在的记录不可被删除,如果你一定要删除一个记录,你只能把这个记录标记为不活跃,实际上并未被删除。记录的内容可以被修改但不能改变其长度。访问这样的数据通过其RBA(RelativeByteAddress)来进行,RBA一般为双字整数,它表示逻辑记录从数据集起始位置的位移量。尽管ESDS没有索引,但你可以建立一个次键索引,用以记录记录的RBA。
ESDS通过地址进行访问,因此可顺序访问也可随机访问。
KSDS:
在KSDS中,每一个逻辑记录含有一个称之为KEY的字段,它唯一地标识一个记录,逻辑记录以KEY升序的顺序存放。KSDS的记录大小可以固定也可以不固定。KEY必须唯一,必须在每个记录的同样位置,如果是跨CI的记录必须在记录的第一个CI中。记录可以被删除,新增加的记录按其KEY值的大小插入在合适的位置。定义KSDS后,未用的空间可以散布在整个数据集,以允许插入新的记录。当新的记录插入到一个CI中时,或已存在的记录大小改变时,其后的记录移动到后面的自由空间,以便于新的记录的插入。同样,当一个记录被删除或变小时,释放的空间可以回收,以便于以后使用。创建使你可以指定一个参数FREESPACE指定每一个CI自由空间的比例。也可指定每个CA中自由空间的比例。
在KSDS中,KEY可用于定位要插入的记录的位置,及读取已存在的记录。最有效地访问KSDS的方法是使用KEY。有以下几种方法:
用顺序的KEY访问可用于读、修改、增加、删除记录。当你指定了顺序的访问方法时,VSAM使用索引以升序或降序的顺序访问数据集。顺序处理可以从数据集的任何位置开始。
直接访问:同样也可用于读、修改、增加、删除记录。你可以指定一个KEY,以此KEY来访问数据集。这个KEY可以是完整的KEY,也可以不完整。比如:你可以指定一个不完整的KEYAB,后面是任何字符。
跳跃的顺序访问:同样也可用于读、修改、增加、删除记录。在这种方式下,VSAM只读选中的记录,并以升序或降序的顺序。
地址访问:以记录的RBA作为查找参数来访问。一般不建议这样访问。
LDS:
LDS的CI大小总是4096字节,无控制信息。应用去成组/分解逻辑记录。用DIVMACRO访问。
固定长度的RRDS:有多个固定长度的SLOT组成。每一个SLOT有一个相对记录号,SLOT以相对记录号排列。
可变长度的RRDS:可变长度的RRDS与固定长度的RRDS类似,每一个记录也有一个惟一的相对记录号,并且也以相对记录号的顺序存放。但没有SLOT。
你可以为一个KSDS或ESDS定义一个或多个次键索引。用它可以以与主键相同的方式访问数据集,次键可以不惟一,也就是说它可以指向多个数据记录。但是最多只能指向32767个记录。次键本身是一个KSDS,它包含索引组建和数据组件。数据组件中的记录含有次键,以及指向数据的指针。对ESDS来说,指针是RBA;对KSDS来说,指针是主键。在通过次键访问数据集之前,必须定义一个路径。可用DEFINEPATH命令来定义路径。
用JCL定义VSAM数据集
除可变长度的RRDS外,任何类型的VSAM数据集都可以通过JCL来定义。
定义一个KSDS
//DDNAMEDDDSNAME=KSDATA,DISP=(NEW,KEEP),
//SPACE=(80,(20,2)),AVGREC=U,RECORG=KS,
//KEYLEN=15,KEYOFF=0,LRECL=250
其中:
DSNAME:数据集的名字。
DISP:创建新的数据集,并保留。
SPACE:记录长80,首次分配20,追加分配5。
AVGREC:指示SPACE中指定的分配量的比例因子是1。
RECORG:创建KSDS。
KEYLEN:键长15。
KEYOFF:键在记录中的位置。
LRECL:逻辑记录长250字节。
复制整个数据集:
//STEP1EXECPGM=IDCAMS
//SYSPRINTDDSYSOUT=A
//MASTERDDDSN=EXAMPLE.KSDS.MASTER,DISP=OLD
//BKUPDDDSN=EXAMPLE.SAM.BACKUP,UNIT=SYSDA,
//SPACE=(TRK,(2,1),RLSE),DISP=(NEW,CATLG)
//VOL=SER=PUB101,
//DCB=(RECFM=FB,LRECL=80,BLKSIZE=6120)
//SYSINDD*
REPROINDATASET(MASTER)–
OUTDATASET(BKUP)
/*
可以只复制一部分记录。用FROMKEY指定从哪一个关键字开始,用FROMADDRESS指
定从哪一个记录开始;用TOKEY指定到哪一个关键字结束,用TOADDRESS指定到哪一个记
录结束。例1.7:
//STEP1EXECPGM=IDCAMS
//SYSPRINTDDSYSOUT=A
//SYSINDD*
REPROIDS(EXAMPLE.LASTNAME.INDEX)–
ODS(EXAMPLE.EXTRACT.ESDS)–
FROMKEY(DEAN)–
TOKEY(LLOYD)
/*
归并两个数据集。
REPROIDS(INPUT)ODS(OUTPUT)REPLACE
定义次键
假定你有一个数据集叫PAYROLL.MASTER,其主键是雇员名字,你想建立一个次键。则:
1)定义次键:
DEFINEALTERNATEINDEX(NAME(PAYROLL.DEPT.AIX)–
RELATE(PAYROLL.MASTER)–
VOLUMES(AIX001)–
UPGRADE)–
DATA(NAME(PAYROLL.DEPT.AIX.DATA)–
TRACK(55)–
RECORDSIZE(2002096)–
KEY(765)–
NONUNIQUEKEY)–
INDEX(NAME(PAYROLL.DEPT.AIX.INDEX)–
IMBED)
2)定义路径:
DEFINEPATH(NAME(RAYROLL.DEPT.PATH)–
PATHENTRY(PAYROLL.DEPT.AIX)–
UPDATE)
3)在索引中装入数据:
BLDINDEXINDATASET(RAYROLL.MASTER)–
OUTDATASET(PAYROLL.DEPT.AIX)
以后你在使用这个数据集时,如果你在JCL中的DD语句如下:
//DD1DDDSN=PAYROLL.MASTER,DISP=SHR
则表示你使用主键访问该数据集。如果你在JCL中的DD语句如下:
//DD1DDDSN=PAYROLL.DEPT.AIX,DISP=SHR则表示你使用次键访问该数据集。
使用访问控制服务的DELETE命令可以删除数据集
VSAM的编目
1、对数据集的编目实际是对数据集的入口建立列表和索引。
2、在z/OS系统中,主编目只有一个,它描述系统的数据集和用户编目,而用户编目则描述用户的数据集。
3、用户编目的建立是选择性的,主要目的是缩短编目的寻找时间。
4、z/OS系统中,编目结构只有两级。
IDCAMS(集成编目访问方法服务实用程序)
[格式]
//SYSINDD*
DEFINECLUSTER- /*续行标记 为“-”,切记
(NAME(ST018.EXAMPLE.KSDS1)- /*子参数间不是用逗号隔开,而是空格,切记切记!
INDEXED-
VOLUNES(USER02)-
FREESPACE(2010)-
RECORDSIZE(100100))
[AMS命令的应用]
1、DEFINEMASTERCATALOG
建立主编目:
DEFINEMASTERCATALOG
(parameters)-
[DATA(parameters)]-
[INDEX(parameters)]-
[CATALOG(parameters)]-
2、DEFINEUSERCATALOG
建立用户编目:
DEFINEUSERCATALOG
(parameters)-
[DATA(parameters)]-
[INDEX(parameters)]-
[CATALOG(parameters)]-
3、DEFINECLUSTER(建立并定义VSAM数据集)
DEFINECLUSTER
(NAME(entryname)-
{CYCINDERS(primary[secondary])|-
RECORDS(primary[secondary])}-
[FREESPACE(cipercent[capercent])]-
[INDEXED|NONINDEXED|NUMBERED|LINEAR]-
[KEYS(LENGTHOFFSET)]-
[RECORDSIZE(averagemaximum)]-
[RECOVERY|SPEED]-
[SHAROPTIONS(crosspartition[crosssystem])]-
[VOLUMES(volser[volser...])])
[DATA
([NAME(entryname)])]
[INDEX
([NAME(entryname)])]
[CATALOG(mastercatname[/password])]
(1)NAME:指明VSAM数据集的名字,命名规则和其它数据集相同。
(2)CYLINDERS:以柱面为单位分配空间,仅限于磁盘数据集。Primary指第一次进行分配的数量,secondary指追加的分配数量。
(3)RECORD:以记录为单位进行数据集的分配。
(4)FREESPACE:给KSDS或者VRRDS中的每个CI和CA分别预留多少百分比的空间。默认为0;
(5)INDEXED:数据集类型为KSDS
(6)NONINDEXED:数据集类型为ESDS
(7)NUMBERED:数据集类型为RRDS,如果记录平均长度和最大长度不一样,则为VRRDS。
(8)LINEAR:数据集类型为LDS
(9)KEYS:说明数据集中索引的长度和起始位置。注意,偏移良是从零开始的。
(10)RECORDSIZE:分别指定记录的平均长度和最大长度。如果两值相等,则代表数据集的记录是定长格式
(11)VOLUME:卷标号
(12)DATA:代表KSDS数据集的数据部分
(13)INDEX:代表KSDS数据集的索引部分
4、REPRO
将记录存入数据集中、复制VSAM数据集、复制编目、分开编目或者合并编目。
REPRO{INDATASET(datasetname)|
INFILE(DDname)}</s
分享到:
相关推荐
- **目标**: 通过本课程的学习,学生将了解VSAM数据集的基本概念、不同类型的VSAM数据集的特点及其在z/OS和OS/390系统中的应用。 #### 二、Access Method Services (AMS) - **定义**: AMS是VSAM的一部分,它提供了...
VSAM(Virtual Storage Access Method,虚拟存储访问方法)是IBM在大型机系统中广泛使用...本套VSAM训练资料旨在帮助学习者掌握VSAM的基本概念、操作技巧及实践应用,通过反复练习,提升在大型机系统中的数据管理能力。
在学习VSAM的过程中,理解其内部工作机制和如何在实际应用中配置、管理和优化VSAM文件至关重要。这本PDF教程将详细介绍这些内容,并提供实践案例帮助读者掌握VSAM的使用技巧。通过学习,你将能够更好地应对大型机...
### VSAM介绍及实例 #### 一、VSAM概述 **VSAM**(Virtual Storage Access Method) 是由IBM公司开发的一种高效、灵活的文件管理系统。...无论是对于初学者还是有经验的专业人士来说,学习和掌握VSAM都是非常有价值的。
**虚拟存储访问方法(VSAM)详解** 在大型机领域,Virtual Storage Access Method,简称VSAM,是一种重要的数据存取方法。...通过深入学习和实践,开发者可以更好地利用VSAM的优势来构建高性能的应用程序。
### VSAM中文学习资料知识点详解 #### 一、大型服务器外存管理概述 **知识点1:外存管理的重要性** - **定义与作用**:外存是计算机系统中用于长期保存数据的部分,对于用户来说,它是数据处理过程中不可或缺的一...
1. **VSAM的基本概念**: - VSAM数据集:VSAM数据集是存储在内存中的逻辑数据结构,它可以是顺序、索引、相对记录或KSDS(Key Sequenced Data Set)类型。VSAM通过内存映射技术使得数据访问速度极快。 - KSDS:...
### VSAM_MANUAL知识点概述 #### 一、DFSMS/MVS Version 1 Release 5 IBM Access Method ...通过学习本手册,读者能够深入了解VSAM的工作原理,掌握如何高效地管理和维护VSAM目录,进而提高系统的性能和稳定性。
数据集介绍和学习 在 OS/390 中,每个硬盘称之为卷。卷划分为柱面,柱面又划分为磁道。数据集的访问方法一个数据集可以是一个源程序或一个程序要处理的数据文件。程序处理数据集时,记录是其基本的处理单位。数据集...
1. **大型主机概述**:大型主机,通常指IBM的System z系列,是用于处理大量数据和并发交易的高性能计算机系统。它们在金融、保险、电信和政府等领域有着广泛的应用,因为它们能够处理复杂的业务流程和海量数据。 2....
《大型机操作系统课件(5章)》是针对初学者设计的一套全面的教程,旨在帮助学习者深入了解大型机操作系统的精髓。课程共分为五个章节,涵盖了从基础概念到核心应用的关键内容。以下是对每个章节及其相关知识点的详细...
在IBM培训基地中的CICS教程,你将深入学习如何利用CICS进行高效且可靠的业务流程管理。 首先,我们要理解CICS在IT环境中的作用。CICS为大型机(Mainframe)环境下的应用提供了强大的交易处理能力,它能够处理大量的...
1. **物理顺序**(Physical Sequential):记录按物理顺序存储,适合连续读取。 2. **索引顺序**(Indexed Sequential):同时支持顺序和随机访问,适用于需要快速定位特定记录的情况。 3. **直接**(Direct):用于...
1. **数据集定义**:数据集是一个包含逻辑相关数据记录的集合,这些记录可以存储在一个或多个磁盘存储卷上。在z/OS系统中,逻辑记录是程序处理的基本信息单元。 2. **数据集分类**:数据集可以分为多种类型,如源...
索引文件通过索引表连接逻辑记录和物理记录,分为稠密索引和稀疏索引,如ISAM和VSAM分别是静态和动态的索引方法。散列文件则是直接根据关键字存取,优点是快速存取,但仅支持随机存取。多重表文件和倒排表是针对次...
在实验中,我们将学习如何在CICS中配置和使用VSAM文件。这包括创建VSAM文件的定义,将其与CICS资源关联,以及编写处理这些文件的COBOL程序。COBOL是一种经典的编程语言,特别适合于处理企业级的数据处理任务。我们...
### 主题概述 《ABCs of z/OS System Programming Volume 1》是IBM关于大型机系统编程的一系列书籍之一,本书主要围绕z/OS操作系统...通过对这些知识点的学习,读者可以更好地理解和掌握z/OS系统的核心技术及其应用。
在批处理程序(Batch Program)中,如VSAM/Batch COBOL,COBOL被用来处理批量数据,而CICS(Customer Information Control System)则用于联机事务处理。在DBS/ONLINE PGM1中,可能涉及到数据库操作,比如与DB2或...
BCS是VSAM键序数据集,而VVDS是VSAM条目序数据集,用于存储VSAM数据集的“VSAM卷记录”(VVRs)。定义适当的别名(Alias)对于快速查找数据集至关重要,IDCAMS工具可用于创建和管理主目录。 RACF(Resource Access ...
1. **顺序数据集(Sequential Data Set)** - 特点:记录按照物理顺序存放,新记录通常添加在数据集的尾部。 - 应用场景:适合于批量处理任务,如数据备份或日志记录。 2. **分区数据集(Partitioned Data Set, PDS)...