<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>还是那只鱼-newcoin&#039;s blog &#187; VASM</title>
	<atom:link href="http://www.newcoin.info/tag/vasm/feed" rel="self" type="application/rss+xml" />
	<link>http://www.newcoin.info</link>
	<description>人生没有彩排，每天都是现场直播...</description>
	<lastBuildDate>Thu, 02 Feb 2012 12:51:21 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.1.2</generator>
		<item>
		<title>大型机技术之VASM篇</title>
		<link>http://www.newcoin.info/%e5%a4%a7%e5%9e%8b%e6%9c%ba%e6%8a%80%e6%9c%af%e4%b9%8bvasm%e7%af%87.html</link>
		<comments>http://www.newcoin.info/%e5%a4%a7%e5%9e%8b%e6%9c%ba%e6%8a%80%e6%9c%af%e4%b9%8bvasm%e7%af%87.html#comments</comments>
		<pubDate>Wed, 12 Aug 2009 12:24:20 +0000</pubDate>
		<dc:creator>newcoin</dc:creator>
				<category><![CDATA[大型机｜Mainframe]]></category>
		<category><![CDATA[VASM]]></category>
		<category><![CDATA[vasm 技术 要点]]></category>
		<category><![CDATA[vasm 面试 题库]]></category>

		<guid isPermaLink="false">http://www.newcoin.info/?p=28207</guid>
		<description><![CDATA[Virtual Storage Access Method (VSAM) Q1) What are the types of VSAM datasets? A1) Entry sequenced datasets (ESDS), key sequenced datasets (KSDS) and relative record dataset (RRDS). Q2) How are records stored in an ESDS, entry sequenced dataset? A5) They are stored without respect to the contents of the records and in the order in [...]]]></description>
			<content:encoded><![CDATA[<p>Virtual Storage Access Method (VSAM)</p>
<p>Q1)	What are the types of VSAM datasets?<br />
A1)	Entry sequenced datasets (ESDS),  key sequenced datasets (KSDS) and relative record dataset (RRDS).</p>
<p>Q2)	How are records stored in an ESDS, entry sequenced dataset?<br />
A5)	They are stored without respect to the contents of the records and in the order in which they are included in the file.</p>
<p><span id="more-28207"></span></p>
<p>Q3)	What is a CI, control interval?(文章来源：<a href="http://www.newcoin.info">http://www.newcoin.info</a>)<br />
A3)	A control interval is the unit of information that  VSAM transfers between virtual and auxiliary storage.</p>
<p>Q4)	What are the distinctive features of a ksds, key sequenced dataset?<br />
A4)	The index and the distributed free space.</p>
<p>Q5)	What is a CA, control area?<br />
A5)	A group of control intervals makes up a control area.</p>
<p>Q6)	What is a sequence set?<br />
A6)	This is the part of the index that points to the CA and CI of the record being accessed.</p>
<p>Q7)	What is the index set?<br />
A7)	This is the other part of the index.  It has multiple levels with pointers that ultimately reach to the sequence set.</p>
<p>Q8)	What is a cluster?<br />
A8)	A cluster is the combination of the index, sequence set and data portions of the dataset.  The operating system gives program access to the cluster, ie. to all parts of the dataset simultaneously.</p>
<p>Q9)	What is the catalog?<br />
Q9)	The catalog contains the names of all datasets, VSAM and non-VSAM. It is used to access these datasets.</p>
<p>Q10)	What is an alternate index?<br />
Q10)	An AIX is a file that allows access to a VSAM dataset by a key other than the primary one.</p>
<p>Q11)	What is a path?<br />
Q11)	A path is a file that allows you to access a file by alternate index &#8211; the path provides an association between the AIX and the base cluster.</p>
<p>Q12)	What is the upgrade set?<br />
Q12)	The upgrade set is the list of all AIXes that VSAM must maintain for a specific base cluster, so that when data in the base cluster is updated, the AIX files are also updated.</p>
<p>Q13)	What is free space?<br />
Q13)	Free space is reserved within the data component of a KSDS to accommodate inserting new records.</p>
<p>Q14)	What is a VSAM split?<br />
Q14)	If there isn&#8217;t enough space in the control interval VSAM performs a control interval split by moving some records to the free control intervals.  If there isn&#8217;t a free control interval VSAM performs a control area split by allocating a new control area and moving half of the control intervals to it.</p>
<p>Q15)	What is the base cluster?<br />
Q15)	The base cluster consists of the data component and the index component for the primary index of a KSDS.</p>
<p>Q16)	Do primary key values have to be unique?  Do alternate key values have to be unique?<br />
Q16)	Primary key values must be unique; alternate key values need not be.</p>
<p>Q17)	In the COBOL SELECT statement what is the ORGANIZATION for a KSDS?<br />
Q17)	The ORGANIZATION is INDEXED.</p>
<p>Q18)	In the COBOL SELECT statement for a KSDS what are the three possibilities for ACCESS?<br />
Q18)	ACCESS can be SEQUENTIAL, RANDOM or DYNAMIC.</p>
<p>Q19)	What is the COBOL RECORD KEY clause?<br />
Q19)	The RECORD KEY in the SELECT clause identifies the files primary key as it will be known to the program.</p>
<p>Q20)	What is the purpose of the FILE STATUS clause in the SELECT statement?<br />
Q20)	The FILE STATUS field identifies the field that VSAM uses to provide information about each I/O operation for the file.</p>
<p>Q21)	If you wish to use the REWRITE command haw must the VSAM file be opened?<br />
Q21)	It must be opened as I/O.</p>
<p>Q22)	Explain the meaning and syntax for the START command.<br />
Q22)	The START command is used read other than the next VSAM record.  A value must be moved into the RECORD KEY.  The KEY clause is optional, but it can be used to specify a relational (equal, less than, etc.) operator.</p>
<p>Q23)	What is the meaning of dynamic processing?<br />
Q23)	It&#8217;s rarely used.  It means one program uses both sequential and random processing for a VSAM KSDS file.</p>
<p>Q24)	Name some common VSAM error conditions and codes.<br />
Q24)	They are end of file (10), duplicate key (22), record not found (23), VSAM logic error (90), open problem (92) and space problem (93).</p>
<p>Q25)	What is the VSAM-code field?<br />
Q25)	It is a COBOL II enhancement to VSAM batch processing expanding the FILE STATUS field.  It is defined in WORKING-STORAGE as a six byte group item with three two byte elements, the normal return code, the function code and the feedback code.</p>
<p>Q26)	What is a VSAM slot?<br />
Q26)	A relative record dataset (RRDS) consists of a specified number of areas called slots. Each slot is identified by a relative record number (RRN) which indicates its relative position in the file.</p>
<p>Q27)	What is the utility program closely associated with VSAM?<br />
Q27)	IDCAMS, the access method services utility.</p>
<p>Q28)	There are at least seven IDCAMS commands; name and explain each of them ?.<br />
Q28)	ALTER modifies information for a catalog, alternate index, cluster or path.  BLDINDEX builds the alternate index, of course.  DEFINE is used for ALTERNATEINDEX, CLUSTER or PATH. DELETE removes the catalog entry for a catalog, cluster, alternate index or path. LISTCAT lists information about the dataset.  PRINT prints the dataset contents.  REPRO copies records from one file to another.</p>
<p>Q29)	What are the three levels of definition for the VSAM DEFINE?<br />
Q29)	They are DEFINE CLUSTER, DATA and INDEX.(文章来源：<a href="http://www.newcoin.info">http://www.newcoin.info</a>)</p>
<p>Q30)	What is the significance of the SHAREOPTIONS parameter?<br />
Q30)	It specifies how the file may be shared between jobs and between batch and CICS environments.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.newcoin.info/%e5%a4%a7%e5%9e%8b%e6%9c%ba%e6%8a%80%e6%9c%af%e4%b9%8bvasm%e7%af%87.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>JCL/COBOL/DB2/CICS/VASM考试题</title>
		<link>http://www.newcoin.info/jclcoboldb2cicsvasm%e8%80%83%e8%af%95%e9%a2%98.html</link>
		<comments>http://www.newcoin.info/jclcoboldb2cicsvasm%e8%80%83%e8%af%95%e9%a2%98.html#comments</comments>
		<pubDate>Fri, 17 Apr 2009 09:21:10 +0000</pubDate>
		<dc:creator>newcoin</dc:creator>
				<category><![CDATA[大型机｜Mainframe]]></category>
		<category><![CDATA[CICS]]></category>
		<category><![CDATA[cobol]]></category>
		<category><![CDATA[DB2]]></category>
		<category><![CDATA[IBM大型机]]></category>
		<category><![CDATA[JCL]]></category>
		<category><![CDATA[VASM]]></category>
		<category><![CDATA[大型机培训]]></category>
		<category><![CDATA[考试题库]]></category>

		<guid isPermaLink="false">http://www.newcoin.info/?p=27585</guid>
		<description><![CDATA[这些都是曾经我在参加大型机培训时做过的一些考试题目，特拿出来分享一下，主要是关于IBM大型机方面的知识，涉及到JCL/COBOL/DB2/CICS/VASM等方面，题目不多，但基本上都是重点，是必须得掌握的，有兴趣的可以拿去自测一下。不懂的可以问我，呵呵。 JCL Exam (60 Minutes) Name: _____________ Grade: ____________ 1. What is the difference between the JOBLIB and the STEPLIB statements? The position difference.joblib adapts whole job,steplib only exec. 2. Name some of the JCL statements that are not allowed in PROCs. Job statements,dd * statements,dd data statements,/*,null statements 3. What does a dispositions of (NEW,CATLG, KEEP) means? 4. What are three major types of JCL statements? What are their functions? Job,exec,dd statements. 5. What is the difference between catalogue procedure and In-Stream procedure? Position,调用member name,pro name, 6. What is a COND parameter in JCL? 1,position (exec,job)2, 7. How do you check the syntax of a JCL without running it? Typrun=scan 8. How do you override a specific DDNAME/SYSIN in PROC from a JCL? 调用时Dda  dsn=另外一个，dsn=,这样就是制空 9. A PROC has five steps.  Step 3 has a condition code.  How can you override or nullify this condition code? 指定到那个proc的作业步，cond(2,eq,),nullify用even 10. How do you create a temporary dataset?  Where will you use them? Dsn=&#38;&#38;    参数（new,pass,delete）下去的,这样就是temporary （http://www.newcoin.info) DB2 Exam (60 Minutes) Name: _____________ Grade: ____________ 1. How do you eliminate duplicate values in SELECT? 2. What do you accomplish by GROUP BY &#8230; HAVING clause? 3. Why SELECT * is not preferred in embedded SQL programs? 4. What is a cursor? Why should it be used? List the SQL statement for cursors. 5. What is a DB2 bind? 6. What is a host variable? How do you use it? 7. Is it mandatory to use DCLGEN? If not, why would you use it at all? 8. Give the COBOL definition of a VARCHAR field. 9. What does SQLCODE +100 means？ 10. How do you run DB2 batch program? Write down the JCL statements. （http://www.newcoin.info) VSAM Exam (60 Minutes) Name: _____________ Grade: ____________ 1. What are the four types of VSAM datasets? 2. What is a CI? 3. In the COBOL SELECT statement what is the ORGANIZATION for a KSDS? 4. What is the purpose of the FILE STATUS clause in the SELECT statement? 5. There are at least seven IDCAMS commands; name and explain each of them. 6. What is the meaning of each of the values in SHAREOPTS (2 3)? 7. How do you define a KSDS using IDCAMS? 8. How do you define an ALTINDX? How do you use ALTINDXs in batch, CICS programs? （http://www.newcoin.info) CICS Exam (60 Minutes) [...]]]></description>
			<content:encoded><![CDATA[<p>这些都是曾经我在参加大型机培训时做过的一些考试题目，特拿出来分享一下，主要是关于IBM大型机方面的知识，涉及到JCL/COBOL/DB2/CICS/VASM等方面，题目不多，但基本上都是重点，是必须得掌握的，有兴趣的可以拿去自测一下。不懂的可以问我，呵呵。</p>
<p><span id="more-27585"></span></p>
<p><strong>JCL Exam</strong></p>
<p>(60 Minutes)</p>
<p>Name: _____________								Grade: ____________</p>
<p>1. What is the difference between the JOBLIB and the STEPLIB statements?</p>
<p>The position difference.joblib adapts whole job,steplib only exec.</p>
<p>2. Name some of the JCL statements that are not allowed in PROCs.</p>
<p>Job statements,dd * statements,dd data statements,/*,null statements</p>
<p>3. What does a dispositions of (NEW,CATLG, KEEP) means?</p>
<p>4. What are three major types of JCL statements? What are their functions?</p>
<p>Job,exec,dd statements.</p>
<p>5. What is the difference between catalogue procedure and In-Stream procedure?</p>
<p>Position,调用member name,pro name,</p>
<p>6. What is a COND parameter in JCL?</p>
<p>1,position (exec,job)2,</p>
<p>7. How do you check the syntax of a JCL without running it?</p>
<p>Typrun=scan</p>
<p>8. How do you override a specific DDNAME/SYSIN in PROC from a JCL?</p>
<p>调用时Dda  dsn=另外一个，dsn=,这样就是制空</p>
<p>9. A PROC has five steps.  Step 3 has a condition code.  How can you override or nullify this condition code?</p>
<p>指定到那个proc的作业步，cond(2,eq,),nullify用even</p>
<p>10. How do you create a temporary dataset?  Where will you use them?</p>
<p>Dsn=&amp;&amp;    参数（new,pass,delete）下去的,这样就是temporary</p>
<p><a href="http://www.newcoin.info">（http://www.newcoin.info)</a></p>
<p><strong>DB2 Exam</strong></p>
<p>(60 Minutes)</p>
<p>Name: _____________								Grade: ____________</p>
<p>1. How do you eliminate duplicate values in SELECT?</p>
<p>2. What do you accomplish by GROUP BY &#8230; HAVING clause?</p>
<p>3. Why SELECT * is not preferred in embedded SQL programs?</p>
<p>4. What is a cursor? Why should it be used? List the SQL statement for cursors.</p>
<p>5. What is a DB2 bind?</p>
<p>6. What is a host variable? How do you use it?</p>
<p>7. Is it mandatory to use DCLGEN? If not, why would you use it at all?</p>
<p>8. Give the COBOL definition of a VARCHAR field.</p>
<p>9. What does SQLCODE +100 means？</p>
<p>10. How do you run DB2 batch program? Write down the JCL statements.</p>
<p><a href="http://www.newcoin.info">（http://www.newcoin.info)</a></p>
<div class="Section0">
<p><strong>VSAM Exam</strong></p>
<p>(60 Minutes)</p>
<p>Name: _____________								Grade: ____________</p>
<p>1. What are the four types of VSAM datasets?</p>
<p>2. What is a CI?</p>
<p>3. In the COBOL SELECT statement what is the ORGANIZATION for a KSDS?</p>
<p>4. What is the purpose of the FILE STATUS clause in the SELECT statement?</p>
<p>5. There are at least seven IDCAMS commands; name and explain each of them.</p>
<p>6. What is the meaning of each of the values in SHAREOPTS (2 3)?</p>
<p>7. How do you define a KSDS using IDCAMS?</p>
<p>8. How do you define an ALTINDX? How do you use ALTINDXs in batch, CICS programs?</p></div>
<div class="Section0"></div>
<div class="Section0"><a href="http://www.newcoin.info">（http://www.newcoin.info)</a></div>
<div class="Section0"></div>
<div class="Section0">
<p><strong>CICS Exam</strong></p>
<p>(60 Minutes)</p>
<p>Name: _____________								Grade: ____________</p>
<p>1. Specify the CICS command used to read a VSAM record starting with prefix &#8221;F&#8221;. Code all the relevant options.</p>
<p>2. What option is specified in the SEND command to send only the unnamed fields on to the screen? Give out the complete command.</p>
<p>3. What does &#8221;Pseudo Conversational&#8221; mean? What is the EIB parameter and the CICS command used to implement Pseudo-Conversational technique?</p>
<p>4. What are the differences between an EXEC CICS XCTL and an EXEC CICS LINK command?</p>
<p>5. Explain how to handle exceptional conditions in CICS. List at least four types and give detail description of them.</p>
<p>6. What are the differences between Temporary Storage Queue (TSQ) and Transient Data Queue (TDQ)?</p>
<p>7. what do the following transactions do?</p>
<p>CEDF:</p>
<p>CEMT:</p>
<p>CEBR:</p>
<p>CECI:</p>
<p>CESN:</p>
<p>CESF:</p>
<p>CEDA:</p>
<p>8. What is DFHEIBLK? List some items of it and describe these items&#8217; meaning.</p>
<p><a href="http://www.newcoin.info">（http://www.newcoin.info)</a></p>
<p><strong>COBOL Exam</strong></p>
<p>(60 Minutes)</p>
<p>Name: _____________								Grade: ____________</p>
<p>1. Name the four divisions in a COBOL program.</p>
<p>2. How do you define a table/array in COBOL? Give an example.</p>
<p>3. How do you sort in a COBOL program?  Give sort file definition, sort statement syntax and meaning.</p>
<p>4. What is the difference between comp and comp-3 usage? Explain other COBOL usages.</p>
<p>5. What is the difference between SEARCH and SEARCH ALL? What is more efficient?</p>
<p>6. What is PERFORM? What is VARYING? Give more details description about these clauses.</p>
<p>7. What is redefines clause? Give an example.</p>
<p>8. What is CALL statement in COBOL? List the different types of call.</p>
<p><a href="http://www.newcoin.info">（http://www.newcoin.info)</a></div>
]]></content:encoded>
			<wfw:commentRss>http://www.newcoin.info/jclcoboldb2cicsvasm%e8%80%83%e8%af%95%e9%a2%98.html/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>VSAM文件结构及管理</title>
		<link>http://www.newcoin.info/vsam%e6%96%87%e4%bb%b6%e7%bb%93%e6%9e%84%e5%8f%8a%e7%ae%a1%e7%90%86.html</link>
		<comments>http://www.newcoin.info/vsam%e6%96%87%e4%bb%b6%e7%bb%93%e6%9e%84%e5%8f%8a%e7%ae%a1%e7%90%86.html#comments</comments>
		<pubDate>Mon, 16 Mar 2009 09:21:20 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[大型机｜Mainframe]]></category>
		<category><![CDATA[VASM]]></category>
		<category><![CDATA[大机]]></category>
		<category><![CDATA[文档资料]]></category>
		<category><![CDATA[资料]]></category>

		<guid isPermaLink="false">http://newcoin.info/?p=27284</guid>
		<description><![CDATA[VSAM文件结构及管理 VSAM(Virtual Storage Access Method)文件是IBM 公司在虚拟存储器和树型数据结 构的基础上，为了满足数据量大，存取速度快和维护方便的要求而发展起来的一种文件组织 形式。VSAM文件可分为以下几种组织形式： 1) 键顺序文件KSDS：这种文件与索引文件相似，由索引部分和数据部分组成。索引部 分包含树型结构的多级索引。数据部分内的记录按键值顺序排列。因此，这种文件 及可以按键值进行顺序存取，也可利用索引，根据键值进行直接存取。 2) 输入顺序文件ESDS：文件内的记录按输入顺序排列。因此，可以按照排列顺序进行 存取，也可以指定记录的相对字节地址，对特定记录进行存取。 3) 相对记录文件RRDS：文件空间被划分为等长的SLOT，每个SLOT 只存放一个记录， 从第一个SLOT 开始分别赋予连续的顺序号，这样的号码叫相对记录号。只要给出 相对记录号，就可实现对特定记录的直接存取。 4) 线性文件LDS：只有数据组件，由应用去成组/分解逻辑记录。 1． VSAM 文件结构 VSAM 数据集中的数据除线性数据集外，都被组成记录(逻辑记录)。逻辑记录是用户访问 数据集的单位。VSAM 的逻辑记录与非VSAM 数据集的存储方式不同。VSAM 将记录存于CI （Control Interval）。一个CI 是直接访问存储设备的一片连续区域，用于存储数据记录及 其控制信息。当从直接存储设备上读取一个记录时，包含要读的记录的整个CI 都被读到虚存 的VSAM I/O 缓冲中，然后用户要读的记录才从VSAM 缓冲传输到用户定义的工作区。 一个VSAM 数据集在一个卷上可以占用最多119 到123 个Extent，或者占用4，294，967， 296 个字节。 CI 的大小在不同的VSAM 数据集中可以不同，但在一个数据集中必须相同。在创建数据集时， 你可以用访问方法服务的DEFINE 命令指定CI 的大小，也可以让系统自动选择CI 的大小。 每一个CI [...]]]></description>
			<content:encoded><![CDATA[<p>VSAM文件结构及管理<br />
   VSAM(Virtual Storage Access Method)文件是IBM 公司在虚拟存储器和树型数据结<br />
构的基础上，为了满足数据量大，存取速度快和维护方便的要求而发展起来的一种文件组织<br />
形式。VSAM文件可分为以下几种组织形式：<br />
  1) 键顺序文件KSDS：这种文件与索引文件相似，由索引部分和数据部分组成。索引部<br />
     分包含树型结构的多级索引。数据部分内的记录按键值顺序排列。因此，这种文件<br />
     及可以按键值进行顺序存取，也可利用索引，根据键值进行直接存取。<br />
<span id="more-27284"></span><br />
   2) 输入顺序文件ESDS：文件内的记录按输入顺序排列。因此，可以按照排列顺序进行<br />
      存取，也可以指定记录的相对字节地址，对特定记录进行存取。<br />
   3) 相对记录文件RRDS：文件空间被划分为等长的SLOT，每个SLOT 只存放一个记录，<br />
      从第一个SLOT 开始分别赋予连续的顺序号，这样的号码叫相对记录号。只要给出<br />
      相对记录号，就可实现对特定记录的直接存取。<br />
   4) 线性文件LDS：只有数据组件，由应用去成组/分解逻辑记录。</p>
<p>1． VSAM 文件结构<br />
    VSAM 数据集中的数据除线性数据集外，都被组成记录(逻辑记录)。逻辑记录是用户访问<br />
  数据集的单位。VSAM 的逻辑记录与非VSAM 数据集的存储方式不同。VSAM 将记录存于CI<br />
 （Control Interval）。一个CI 是直接访问存储设备的一片连续区域，用于存储数据记录及<br />
  其控制信息。当从直接存储设备上读取一个记录时，包含要读的记录的整个CI 都被读到虚存<br />
  的VSAM I/O 缓冲中，然后用户要读的记录才从VSAM 缓冲传输到用户定义的工作区。<br />
  一个VSAM 数据集在一个卷上可以占用最多119 到123 个Extent，或者占用4，294，967，<br />
  296 个字节。<br />
	CI 的大小在不同的VSAM 数据集中可以不同，但在一个数据集中必须相同。在创建数据集时，<br />
  你可以用访问方法服务的DEFINE 命令指定CI 的大小，也可以让系统自动选择CI<br />
  的大小。<br />
    每一个CI 含有如下信息：<br />
        逻辑记录：每一个CI 中可能包含多个逻辑记录。<br />
        自由空间：每一个CI 中可能含有一定的自由空间，用于插入新的记录。<br />
        控制信息：主要为RDF 和CIDF，RDF 描述每一个记录的信息，而CIDF 则描述整个CI<br />
                   的信息。<br />
        注意：在线性数据集中，CI 全部是数据，无控制信息。<br />
	VSAM数据集中的多个CI成组为直接访问存储设备中的一片连续区域称之为CA(Control<br />
  Area)，一个VSAM 数据集由一个以上的CA 组成。CA 最大为一个柱面，最小必须是一个磁道。<br />
  有时一个记录的大小会大于一个CI 的大小，在VSAM 中，你不必把这个记录劈开，也不<br />
  必重新格式化这样的记录，因为在定义数据集时可以用SPANNED 参数指定记录可以跨多个CI。<br />
  VSAM 数据集有4 种类型：ESDS(Entry sequenced data set)、KSDS(Key Sequenced Data<br />
  Set)、LDS(Linear Data Set)、RRDS(Relative Record Data Set)。<br />
  ESDS：类似顺序文件。其记录长度可固定也可不固定，新记录只能加在数据集的末尾，<br />
  已存在的记录不可被删除，如果你一定要删除一个记录，你只能把这个记录标记为不活跃，<br />
  实际上并未被删除。记录的内容可以被修改但不能改变其长度。访问这样的数据通过其<br />
  RBA(Relative Byte Address)来进行，RBA 一般为双字整数，它表示逻辑记录从数据集起始<br />
  位置的位移量。尽管ESDS 没有索引，但你可以建立一个次键索引，用以记录记录的RBA。<br />
     ESDS 通过地址进行访问，因此可顺序访问也可随机访问。<br />
     KSDS：在KSDS 中，每一个逻辑记录含有一个称之为KEY 的字段，它唯一地标识一个记<br />
           录，逻辑记录以KEY 升序的顺序存放。KSDS 的记录大小可以固定也可以不固定。KEY<br />
           必须唯<br />
	 一，必须在每个记录的同样位置，如果是跨CI 的记录必须在记录的第一个CI 中。记录可以被删除，新增加的记录按其KEY 值的大小插入在合适的位置。定义KSDS 后，未用的空间可以散布在整个数据集，以允许插入新的记录。当新的记录插入到一个CI 中时，或已存在的记录大小改变时，其后的记录移动到后面的自由空间，以便于新的记录的插入。同样，当一个记录被删除或变小时，释放的空间可以回收，以便于 以后使用。创建使你可以指定一个参数FREESPACE 指定每一个CI 自由空间的比例。也可指定每个CA 中自由空间的比例。<br />
	在KSDS 中，KEY 可用于定位要插入的记录的位置，及读取已存在的记录。最有效地访问KSDS 的方法是使用KEY。有以下几种方法：<br />
	用顺序的KEY 访问可用于读、修改、增加、删除记录。当你指定了顺序的访问方法时,VSAM 使用索引以升序或降序的顺序访问数据集。顺序处理可以从数据集的任何位置开始。<br />
	直接访问：同样也可用于读、修改、增加、删除记录。你可以指定一个KEY，以此KEY来访问数据集。这个KEY 可以是完整的KEY，也可以不完整。比如：你可以指定一个不完整的KEY AB，后面是任何字符。<br />
	跳跃的顺序访问： 同样也可用于读、修改、增加、删除记录。在这种方式下，VSAM 只读选中的记录，并以升序或降序的顺序。<br />
	地址访问：以记录的RBA 作为查找参数来访问。一般不建议这样访问。<br />
	LDS：LDS的CI大小总是4096字节，无控制信息。应用去成组/分解逻辑记录。用DIV MACRO访问。<br />
	固定长度的RRDS：有多个固定长度的SLOT 组成。每一个SLOT 有一个相对记录号，SLOT以相对记录号排列。每一记录占用一个SLOT。因此记录的位置是固定的，相对记录号也不能改变。无主索引和次索引。由于SLOT 可以为空，因此可以插入新记录，或删除已存在的旧记录，而不影响其它记录的位置。记录的RDF 指示出SLOT 是否为空。在RRDS 中，每一个CI含有同样多的SLOT。SLOT 的数目由CI 的大小和记录的长度决定。<br />
	可变长度的RRDS： 可变长度的RRDS 与固定长度的RRDS 类似，每一个记录也有一个惟一的相对记录号，并且也以相对记录号的顺序存放。但没有SLOT。你可以为一个KSDS 或ESDS 定义一个或多个次键索引。用它可以以与主键相同的方式访问数据集，次键可以不惟一，也就是说它可以指向多个数据记录。但是最多只能指向32767个记录。次键本身是一个KSDS，它包含索引组建和数据组件。数据组件中的记录含有次键，以及指向数据的指针。对ESDS 来说，指针是RBA；对KSDS 来说，指针是主键。在通过次键访问数据集之前，必须定义一个路径。可用DEFINE PATH 命令来定义路径。</p>
<p>2． VSAM 数据集的定义、复制及删除<br />
VSAM 数据集的定义<br />
定义一个VSAM 数据集之前，应注意：<br />
	1) VSAM 数据集必须是编目的。<br />
	2) 可用TSO ALLOCATE 命令、访问方法服务的ALLOCATE 或DEFINE CLUSTER 命令、动态分配或JCL。要用JCL 定义一个VSAM 数据集，SMS 必须活跃。<br />
	3) 如有必要可定义次键。<br />
	对一个KSDS 来说，数据部件和索引部件合称为CLUSTER。 CLUSTER 提供了把索引和数<br />
据部件统一处理的一种方式。数据部件用于存放数据。<br />
	索引部件由顺序集和索引集组成。<br />
数据部件中的每一个CA 在顺序集中都有一个对应的CI，它含有其对应的数据部件中的<br />
CA 中的每一个CI 的最大键值及其指针。所有顺序集中的CI 又顺序地连接在一起。索引部件<br />
的其它部分构成了索引集。如图2.11 所示，所有索引集和顺序集构成了一棵查询树。其中顺<br />
序集可用于顺序访问，而索引集和顺序集合起来可用于随机访问。</p>
<p>1）用访问方法服务命令定义VSAM 数据集<br />
	VSAM 数据集可以通过DEFINE CLUSTER 或ALLOCATE 命令来定义。当定义了CLUSTER<br />
后，VSAM 使用三个编目项描述一个CLUSTER：<br />
	-一个CLUSTER 项把CLUSTER 描述为一个部件。<br />
	-一个数据项描述CLUSTER 的数据部件。<br />
	-对KSDS 来说，一个索引项描述CLUSTER 的索引部件。<br />
（1)关于VSAM 文件的属性<br />
	如果使用DEFINE CLUSTER 命令，数据和索引部件的属性可以与CLUSTER 的属性分别指定。<br />
	-如果你为CLUSTER 指定了属性，则CLUSTER 的属性同样适用于部件。<br />
	-如果你为CLUSTER 和部件都指定了属性，则部件的属性覆盖CLUSTER 的属性。<br />
	-如用ALLOCATE，则只能在CLUSTER 一级指定属性。定义VSAM 数据集时，要指定数据集的属性。如果SMS 活跃，你定义的数据集又是系统管理的数据集，你可以指定DATA CLASS，MANAGEMENT CLASS 和STORAGE CLASS。你也可以用系统默认的这些CONSTRUCT。CONSTRUCT 只能在CLUSTER 一级上指定。<br />
	以下是定义VSAM 数据集是有关的描述性信息：<br />
INDEXED|NONINDEXED|NUMBERED|LINEAR：指定数据集的结构形式信息(KSDS、ESDS、RRDS、<br />
LDS)。RECORDSIZE：指定记录的平均和最大长度。不适用于LDS。<br />
注意： 1)可变长度的RRDS 用NUMBERED 和RECORDSIZE 定义，而平均记录长度和最大记<br />
录长度必须不同。2)如果对于ESDS，KSDS 或可变长度的RRDS 数据集，记录长度小于最大记<br />
录长度，VSAM 把实际记录的长度记录在RDF 中。<br />
KEYS：指示KSDS 中键的长度和位置。<br />
CATALOG：指示CLUSTER 所在的编目的名字和口令。<br />
VOLUMES：指示CLUSTER 所在的卷。<br />
RECORDS|KILOBYTES|MEGABYTES|TRACKS|CYLINDERS：指示分配该数据集的空间的单位及大小。<br />
BUFFERSPACE：指示在处理该数据集时，应分配的最小的缓冲.<br />
	以下是定义VSAM 数据集是有关的性能信息：<br />
CONTROLINTERVALSIZE：指定CI 的大小。此参数必须大于记录的最大大小。对LDS 无效。<br />
SPANNED：指示记录是否可以跨CI。不适用于RRDS 和LDS。<br />
	IMBED：指示是否将索引的顺序集放在相应的CA 中。如果是，则会提高数据集的性能,但会增加空间.对索引组件的VOLUMES：指示是否把索引组件放在另一个卷上。<br />
FREESPACE：指示预留自由空间的大小。<br />
	以下是定义VSAM 数据集时有关的安全信息：<br />
AUTHORIZATION：指定你自己的一个授权子程序，验证对此数据集的访问是否合法。<br />
WRITECHECK：指示对此数据集写后是否要检查，以保证以后能读出。<br />
ERASE：指示数据集被删除后，是否要彻底删除。<br />
（2)VSAM 数据集的命名<br />
定义CLUSTER 时，要指定CLUSTER 名。通常，CLUSTER 名就是JCL 中给出的DSNAME。也可以各自独立命名索引和数据部件。如果只指定了CLUSTER 名而未指定索引和数据部件的名字，VSAM 会自动产生索引和数据部件名字。VSAM 以下列方式产生索引和数据部件名字：<br />
如果CLUSTER 的最后一个QUALIFIER 是CLUSTER，则数据部件和索引部件名字的最后一个QUALIFIER 分别替换为DATA 和INDEX。<br />
	例如：<br />
	Cluster 名： SALES.REGION2.CLUSTER<br />
	产生的数据部件名 = SALES.REGION2.DATA<br />
	产生的索引部件名 = SALES.REGION2.INDEX<br />
如果CLUSTER 名的长度小于等于38 个字符，则分别在CLUSTER 名后加.DATA和.INDEX。<br />
	 例如：<br />
	Cluster 名： DEPT64.ASSET.INFO<br />
	产生的数据部件名 = DEPT64.ASSET.INFO.DATA<br />
	产生的索引部件名 = DEPT64.ASSET.INFO.INDEX<br />
如果CLUSTER 名长度在39 到42 之间，则在数据部件和索引部件名后分别加.D和.I。<br />
	例如：<br />
	Cluster 名： DEPTABCD.RESOURCE.REGION66.DATA1234.STUFF<br />
	产生的数据部件名 = DEPTABCD.RESOURCE.REGION66.DATA1234.STUFF.D<br />
	产生的索引部件名 = DEPTABCD.RESOURCE.REGION66.DATA1234.STUFF.I<br />
产生索引和数据部件的名字后，VSAM 会查找编目，以保证产生的部件名字是唯一的。如国不<br />
一，则重新产生。<br />
可以用访问方法服务ALLOCATE 或TSO ALLOCATE 命令定义一个暂时的VSAM 数据集。也用JCL 直接定义。系统管理的暂时的VSAM 数据集不需要指定数据集名，而由系统自动产生唯一<br />
	的名字。如果一定要指定则必须以&#038;或&#038;&#038;打头。<br />
	（3)为VSAM 数据集分配空间<br />
	定义数据集时，你或者SMS(通过指定DATA CLASS)必须指定数据集的空间分配。如果你自己指定则可以以记录数、千字节、兆字节、磁道数、柱面数为单位。为了保持设备的无关性，最好以记录数、千字节、兆字节为单位。你可以在CLUSTER 级，数据组件级或索引组件级指定空间大小，但最好在CLUSTER 或数据组件级指定。VSAM 分配空间的原则如下：<br />
	-如果指定了CLUSTER 和索引组件的大小，则数据组件的大小是CLUSTER 的大小减去索引组件的大小。<br />
	-如果只指定了数据组件的大小，则指定的大小全部分配给数据组件，索引组件再另外追加一部分空间。<br />
	-如果同时指定了数据组件和索引组件的大小，则按指定的大小建立数据集。如果你定义一个小于一个柱面的数据集，VSAM 以磁道为单位分配空间。此时，最好为数据组件指定首次分配的最大磁道数，并且不要指定数据或索引的第二次分配。分配时，VSAM检查指定的设备的柱面大小，如果要分配的数量大于等于设备的柱面大小，则CA 等于柱面大小，如果小于则CA 大小等于实际分配量。CA 最小为一个磁道。</p>
<p>	用JCL 定义VSAM 数据集<br />
除可变长度的RRDS 外，任何类型的VSAM 数据集都可以通过JCL 来定义。<br />
例1.3：定义一个KSDS<br />
	//DDNAME DD DSNAME=KSDATA，DISP=(NEW，KEEP)，<br />
	// SPACE=(80，(20，2))，AVGREC=U，RECORG=KS，<br />
	// KEYLEN=15，KEYOFF=0，LRECL=250<br />
其中：<br />
	DSNAME：数据集的名字。<br />
	DISP：创建新的数据集，并保留。<br />
	SPACE：记录长80，首次分配20，追加分配5。<br />
	AVGREC：指示SPACE 中指定的分配量的比例因子是1。<br />
	RECORG：创建KSDS 。<br />
	KEYLEN：键长15。<br />
	KEYOFF：键在记录中的位置。<br />
	LRECL：逻辑记录长250 字节。<br />
例1.4：创建一个系统管理的KSDS：<br />
	//DDNAME DD DSNAME=KSDATA，DISP=(NEW，KEEP)，<br />
	// DATACLAS=STANDARD，STORCLAS=FAST，<br />
	// MGMTCLAS=STANDARD<br />
例1.5：按照默认值创建一个VSAM 数据集。<br />
	//DDNAME DD DSNAME=DSVSAM，DISP=(NEW，CATLG)<br />
	装入数据到VSAM 数据集,数据集定义后，你可以装入数据到VSAM 数据集。<br />
-装入ESDS 的记录可以是任何顺序。<br />
-固定长度的RRDS 把记录装入到SLOT 中，其相对记录号不是逻辑记录的一部分。<br />
-装入KSDS 的记录必须按键的升序排列，并且不得有重复键。<br />
-装入可变长度的RRDS 的记录必须按键的升序排列，并且不得有重复键。<br />
REPRO 命令可用于从顺序，索引顺序或VSAM 数据集装入数据。也可用于从一个LDS 装<br />
入数据到另一个LDS。<br />
装入数据到VSAM 数据集的示例可见例1.1。<br />
复制数据集<br />
	你可用REPRO 作如下事情：<br />
	-复制或合并VSAM 数据集到另一个VSAM 数据集。<br />
	-复制或合并顺序数据集到另一个顺序数据集。<br />
	-把顺序或索引顺序的数据集转换为VSAM 数据集。<br />
	-把VSAM 数据集复制为顺序数据集。<br />
	-复制PDS 或PDSE 数据集的成员。PDS 或PDSE 数据集不能复制，但单个的成员可以复制。<br />
	例1.6：复制整个数据集：<br />
	//STEP1 EXEC PGM=IDCAMS<br />
	//SYSPRINT DD SYSOUT=A<br />
	//MASTER DD DSN=EXAMPLE.KSDS.MASTER，DISP=OLD<br />
	//BKUP DD DSN=EXAMPLE.SAM.BACKUP，UNIT=SYSDA，<br />
	// SPACE=(TRK，(2，1)，RLSE)，DISP=(NEW，CATLG)<br />
	// VOL=SER=PUB101，<br />
	// DCB=(RECFM=FB，LRECL=80，BLKSIZE=6120)<br />
	//SYSIN DD *<br />
	REPRO INDATASET(MASTER) –<br />
	OUTDATASET(BKUP)<br />
	/*<br />
	你也可以只复制一部分记录。用FROMKEY 指定从哪一个关键字开始，用FROMADDRESS 指<br />
定从哪一个记录开始； 用TOKEY 指定到哪一个关键字结束， 用TOADDRESS 指定到哪一个记<br />
录结束。例1.7：<br />
	//STEP1 EXEC PGM=IDCAMS<br />
	//SYSPRINT DD SYSOUT=A<br />
	//SYSIN DD *<br />
	REPRO IDS(EXAMPLE.LASTNAME.INDEX) –<br />
	ODS(EXAMPLE.EXTRACT.ESDS) –<br />
	FROMKEY(DEAN) –<br />
	TOKEY (LLOYD)<br />
	/*<br />
也可以归并两个数据集。例1.8：<br />
	REPRO IDS(INPUT) ODS(OUTPUT) REPLACE<br />
	定义次键<br />
次键本身也是一个KSDS。它提供了另一种方法访问VSAM KSDS 和ESDS 数据集。<br />
定义次键的步骤如下：<br />
1) 定义CLUSTER。<br />
2) 装入数据。<br />
3) 用DEFINE ALTERNATEINDEX 命令定义次键。<br />
4) 用DEFINE PATH 命令将次键与CLUSTER 相关联。<br />
5) 用BLDINDEX 命令建立次键。也就是在索引中装入数据。<br />
	VSAM 用3 个编目项描述一个次键：<br />
	-一个次键项描述次键是一个KSDS。<br />
	-一个数据项描述次键的数据部件。<br />
	-一个索引项描述次键的索引部件。<br />
	定义次键需要指定的信息与定义一个KSDS 类似。如果次键允许许多不唯一的键，则<br />
RECORDSIZE 必须足够大。在定义次键时，如指定了UPGRADE 属性，则VSAM 数据集改变时，<br />
次键自动改变。<br />
例1.9，假定你有一个数据集叫PAYROLL.MASTER，其主键是雇员名字，你想建立一个次键。则：<br />
1) 定义次键：<br />
	DEFINE ALTERNATEINDEX (NAME(PAYROLL.DEPT.AIX) –<br />
	RELATE(PAYROLL.MASTER) –<br />
	VOLUMES(AIX001) –<br />
	UPGRADE) –<br />
	DATA (NAME(PAYROLL.DEPT.AIX.DATA) –<br />
	TRACK (5 5) –<br />
	RECORDSIZE(200 2096) –<br />
	KEY (7 65) –<br />
	NONUNIQUEKEY) –<br />
	INDEX (NAME(PAYROLL.DEPT.AIX.INDEX) –<br />
	IMBED)<br />
2) 定义路径：<br />
	DEFINE PATH(NAME(RAYROLL.DEPT.PATH) –<br />
	PATHENTRY(PAYROLL.DEPT.AIX) –<br />
	UPDATE)<br />
3) 在索引中装入数据：<br />
	BLDINDEX INDATASET(RAYROLL.MASTER) –<br />
	OUTDATASET(PAYROLL.DEPT.AIX)<br />
	以后你在使用这个数据集时，如果你在JCL 中的DD 语句如下：<br />
	//DD1 DD DSN=PAYROLL.MASTER，DISP=SHR<br />
	则表示你使用主键访问该数据集。如果你在JCL 中的DD 语句如下：<br />
	//DD1 DD DSN=PAYROLL.DEPT.AIX，DISP=SHR 则表示你使用次键访问该数据集。</p>
<p>删除数据集<br />
	使用访问控制服务的DELETE 命令可以删除数据集，你可以删除整个CLUSTER，也可以只删除次键或路径。在此我们不再详细给出命令的语法及实例，感兴趣的读者可参见有关参考资料。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.newcoin.info/vsam%e6%96%87%e4%bb%b6%e7%bb%93%e6%9e%84%e5%8f%8a%e7%ae%a1%e7%90%86.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
<!-- WP Super Cache is installed but broken. The path to wp-cache-phase1.php in wp-content/advanced-cache.php must be fixed! -->
