大型机相关知识个人总结_第1页
大型机相关知识个人总结_第2页
大型机相关知识个人总结_第3页
大型机相关知识个人总结_第4页
大型机相关知识个人总结_第5页
已阅读5页,还剩56页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、(1)Z系列主机 是基于64位的Z体系的.所以,Z/OS支持64位寻址.(2)除了常见的Z/OS外,其它常见的大机操作系统有:Z/VM,VSE,LINUX FOR ZSERISE和Z/TPF.(3)RAID 冗余磁盘陈列(4) Z/OS上面有两种网络模型,由IBM发明的SNA模型以及广泛使用的TCP/IP模型.TCP/IP有五层 : 应用层,传输层,网络层,接口层,硬件层.(5)只有顺序数据集才能存储在磁带上!(6)数据集命名规则 : 数据集名可以是一个名字段,也可以是一系列联合的名字段,左边的第一个名字段被称为 HLQ - high level qualifier,右边的最后一个字段被称为L

2、LQ.每个名字段的长度必须是1到8个字符以内.且必须以字母或者#$开头.其它字符可以是字母,数字或者连字符.包括所有的名字段和句点,数据集名长度不能超过44个字符,因此一个数据集名最多只能有22个名字段.一个数据集的HLQ一般由系统控制,(7)定义临时数据集的方法: 一是省略DSN名,系统会自动为临时数据集产生一个合适的名字,二是自己指定,格式是&后面加1到8个字符.假如定义了: /TEMP DSN=&MYTEMP,DISP=(NEW,CATLOG,DEL)那系统生成的数据集名应该是: USERID.JOBNAME.JOBID.DDSNUMBER.MYTEMP(8)_PDSE(

3、扩展分区数据集)与PDS的区别在于,PDSE能够自动重用空间,不像PDS那样,到一定程度就需要压缩,来释放未作用的空间.(9)变长记录的数据集中,不管是组块,还是不组块,每条记录的开头处都有4个字节的记录描述字(RDW),用来描述本条记录的实际长度.(10)Z/OS中数据集存储管理的主要方法是通过DFSMS组件,DFSMS的核心是SMS(Storage Management System),(11)在Z/OS中,系统使用编目机制来管理整个系统中的数据集.编目有两种:主编目(MASTER CATALOG)与用户编目(USER CATALOG).通过ISPF创建的数据集都是自动编目的!(12)数据

4、集操作有关命令:E :编辑数据集B :浏览数据集D :删除数据集R : 重命名数据集Z :压缩一个分区数据集,以释放空间(COMPRESS)C :编目数据集U :反编目数据集(13) 数据集拷贝:1: 从一个PS,拷贝到PS;2: 从一个PS,拷贝使之成为一个PDS的MEMBER;3: 从一个PDS的MEMBER,拷贝出来,使之成为一个新的PS;4: 从一个PDS的MEMBER,拷贝出来,使之成为另一个PDS的新MEMBER.操作方法分别如下:这些都是手工操作的方法,当然也可以写JCL来操作,此处不作讨论!1: 从一个PS,拷贝使之成为一个新PS;在3.3下,在ISPF 中,查找以前使用过的命

5、令的快捷键是哪个?SHIFT + F12 !要注意的是,这样的拷贝,如果目标数据集本身并不存在,那么会弹出框框来让你选择使用跟源数据集一样的属性分配新数据集呢,还是自己重新设定新数据集属性,这时如果选择1,使用旧属性,则其它属性是一致的,但不能保证源跟目标数据集在同一个卷下面.! 如果选择2 使用自己分配新属性,则VOLUME还是不能按指定的位置存放,不知道原因!如果目标数据集本身是存在的,并且数据记录长度也一致,那么会将源数据集中的记录,追加到目标数据集的后面!如果记录长度不一致,并且目标数据集的长度小于源数据集的记录长度,那么就会弹出一个提示,报告这一情况,并决定是否进行截断式拷贝.如果目

6、标数据集的记录长度大于源数据集的记录长度,则不提示,直接追加!2: 从一个PS,拷贝使之成为一个PDS的MEMBER;方法 1: 3.3下:上面的操作中,如果目标PDS不存在,则按上述写法不会出错,而是会提示如何分配新的数据集,但是当你按1后,显示操作失败,但在3.4下可以看到新的数据集是有了,但却是一个PS,所以,这儿不能用PS的属性来分配一个PDS,因为目录空间的设置无法在PS的属性中找到对应选项.这时就必须选2,把属性中缺的目录空间大小补上,并把数据集属性设为PDS,然后就可以拷贝成功了,这时候系统按你的属性新建了一个PDS并且按你所给的名字创建了一个新MEMBER,并把源数据集中的内容

7、拷贝了过来!如果PDS已存在,且MEMBER也已存在,则拷贝会失败.而不是像拷贝成PS那样,将新内容追加到目标MEMBER的后面!方法2: 在PDS下面新建一个空白MEMBER,然后使用 COPY SORCE.PS 命令把内容拷贝过来!3: 从一个PDS的MEMBER,拷贝出来,使之成为一个新的PS;3.3 下:这时也要分情况,如果目标数据集已经存在,则拷贝成功,并且是记录追加,如果不存在,则又会弹出框框来要求你设置,同样跟上面从PS到PDS的一样,不能选1按源数据集属性创建,那样子的话创建出来就成一个PDS了,不符合我们的要求,所以这儿也要选2,然后把类型由PDS改为空,然后把目录空间大小改

8、为0.这样就可以拷贝成功了!如果在一个现有的PS中,输入命令 : COPY CN0002.A.TEST.PDS(TEST) 而要想把PDS成员的内容拷贝过为,是不可以的,提示COPY PENDING错误!那就只能CC -CUT - PASTE了!4: 从一个PDS的MEMBER,拷贝出来,使之成为另一个PDS的新MEMBER.如果在一个PDS的前面打CO:然后选中想要拷贝出去的MEMBER,即在MEMBER前面打S,然后输入新的PDS名,注意这儿不能添加任何MEMBER名:这样子会提示DATA SET NOT CATLOED !看来还是得去.下这时候如果PDS不存在,则会弹出提示,选择如何设置

9、属性,这时因为是从PDS到PDS,如果没有别的特殊需要,直接选1就可以了.如果PDS已经存在,但MEMBER不存在,则拷贝可以成功,但是如果MEMBER已经存在了,则拷贝失败,而不会进行内容追加!(14)SCLM : Software Configuration and Library Management SCLM 由两部分组成 : 库管理器 以及 配置管理器先在SCLM中配置一个项目,然后每当要编辑一个程序的时候,需要先从SCLM中把程序取下来,然后 编辑编译,修改成功以后,再放到SCLM上.进入SCLM的方式可以为如下步骤,也可以直接在COMMAND LINE中输入 TSO SCLM 命

10、令直接进入.(15)主机中如何看某个DATA SET当前在被何JOB所用的方法使用ISRDDN即可,所谓的 ISRDDN,实际上是 OS/390以及Z/OS下的一个诊断工具,详细情况见:DocumentsMainframe00. Z_OSBLOG 12.26 MF相关小知识 .doc(16)在TSO中可以使用 TSO LU 命令来查看自己的权限.(17)TSO 小技巧:1. PF Key的设置这个因人而异的,我是不太用PF2和PF4的, 所以会把这两个PF Key设置成执行一些小的REXX程序,这样平时工作的时候就可以很方便的调用些自己写的东西2. 浏览方式我发现我的很多同事在浏览member

11、的时候,前面用B或者V,其实大家可以试一下直接在member前敲回车,因为我们进入PDS的方式就决定了使用同样的方式,browse或者view去看这个member,不需要再输入B或者V了.3. V /(*)假设一个PDS中有很多member的,但是我们只想看TT开头的member,那么在PDS前输入 V /(TT*),那么就只列出TT开头的那些member了4. ;的使用在删除很多的Member时候,每删除一个member都会跳出确认框, 我一般在确认的地方输入;, 那么剩下要删除的member都不需要确认了.5. Rename其实改member的名称的时候,我们可以在member前输入R,然

12、后不要敲回车,按下Tab键,光标会跳到Prompt列(如果没记错名字), 输入新的member名,再敲回车.尤其在批量改名的时候,很管用6. SRCHFOR如果用的是z/OS,这个命令应该是可以用的,OS/390我不确定,我是没用成功过. 在PDS里,在大量的member里搜索xxxxx,这个时候可以不用3.14了.在Command Line输入SRCHFOR xxxx就可以了7. 回车键我们经常想对一些PDS的属性排序,比如tracks,XT等等.然后就PF11,然后SORT XT. 其实我们可以在XT上直接敲回车就可以了,这个是降序的,在member中一样有效8. TE和我们写程序或者JC

13、L的时候,经常需要插入很多空行,一般用I9.其实大家可以试试TE,这个命令会在当前行下插入空行一直到当前屏幕的最后一行. , 这个在写JCL的时候还是挺有用的,类似(和),不过不会移动/XXXX的位置.9. 连续执行命令有的时候我们可能需要顺序执行一些命令,大家可以试试用;. 比如说在编辑程序的时候,只想显示AAA的字段,我一般使用X ALL;F AAA ALL;DEL X ALL,然后敲回车,这样比单独的输入三次命令要快一些.(18)下载DATA SET中的文件首先打开WINDOWS的COMMAND PROMPT(RUN CMD)然后输入:FTP 23(SERVER

14、的地址)然后她会提示你分别输入用户名和密码。再输入命令PROMPT接着你就将进入你的用户名下的文件夹(比如VIVIAN)进入你想下载的DATA SET: CD VSAM.JCL(没有了VIVIAN,命令和DOS相同)输入:MGET *你就得到了该DATA SET下的所有文件,放于C:DOCUMENTS AND SETTINGADMINISTRATOR中数据集命名规则 : 数据集名可以是一个名字段,也可以是一系列联合的名字段,左边的第一个名字段被称为 HLQ - high level qualifier,右边的最后一个字段被称为LLQ.定义临时数据集的方法: 一是省略DSN名,系统会自动为临时数

15、据集产生一个合适的名字,二是自己指定,格式是&后面加1到8个字符.PDSE(扩展分区数据集)与PDS的区别在于,PDSE能够自动重用空间,不像PDS那样,到一定程度就需要压缩,来释放未作用的空间.变长记录的数据集中,不管是组块,还是不组块,每条记录的开头处都有4个字节的记录描述字(RDW),用来描述本条记录的实际长度.在Z/OS中,系统使用编目机制来管理整个系统中的数据集.编目有两种:主编目(MASTER CATALOG)与用户编目(USER CATALOG).通过ISPF创建的数据集都是自动编目的!在ISPF 中,查找以前使用过的命令的快捷键是哪个?SHIFT + F12 !要注意的

16、是,这样的拷贝,如果目标数据集本身并不存在,那么会弹出框框来让你选择使用跟源数据集一样的属性分配新数据集呢,还是自己重新设定新数据集属性,这时如果选择1,使用旧属性,则其它属性是一致的,但不能保证源跟目标数据集在同一个卷下面.! 如果选择2 使用自己分配新属性,则VOLUME还是不能按指定的位置存放,不知道原因!如果目标数据集本身是存在的,并且数据记录长度也一致,那么会将源数据集中的记录,追加到目标数据集的后面!如果记录长度不一致,并且目标数据集的长度小于源数据集的记录长度,那么就会弹出一个提示,报告这一情况,并决定是否进行截断式拷贝.如果目标数据集的记录长度大于源数据集的记录长度,则不提示,

17、直接追加!上面的操作中,如果目标PDS不存在,则按上述写法不会出错,而是会提示如何分配新的数据集,但是当你按1后,显示操作失败,但在3.4下可以看到新的数据集是有了,但却是一个PS,所以,这儿不能用PS的属性来分配一个PDS,因为目录空间的设置无法在PS的属性中找到对应选项.这时就必须选2,把属性中缺的目录空间大小补上,并把数据集属性设为PDS,然后就可以拷贝成功了,这时候系统按你的属性新建了一个PDS这时也要分情况,如果目标数据集已经存在,则拷贝成功,并且是记录追加,如果不存在,则又会弹出框框来要求你设置,同样跟上面从PS到PDS的一样,不能选1按源数据集属性创建,那样子的话创建出来就成一个

18、如果在一个现有的PS中,输入命令 : COPY CN0002.A.TEST.PDS(TEST) 而要想把PDS成员的内容拷贝过为,是不可以的,提示COPY PENDING错误!那就只能CC -CUT - PASTE了!这时候如果PDS不存在,则会弹出提示,选择如何设置属性,这时因为是从PDS到PDS,如果没有别的特殊需要,直接选1就可以了.先在SCLM中配置一个项目,然后每当要编辑一个程序的时候,需要先从SCLM中把程序取下来,然后 编辑编译,修改成功以后,再放到SCLM上.,详细情况见:DocumentsMainframe00. Z_OSBLOG 12.26 MF相关小知识 .doc这个因人

19、而异的,我是不太用PF2和PF4的, 所以会把这两个PF Key设置成执行一些小的REXX程序,这样平时工作的时候就可以很方便的调用些自己写的东西我发现我的很多同事在浏览member的时候,前面用B或者V,其实大家可以试一下直接在member前敲回车,因为我们进入PDS的方式就决定了使用同样的方式,browse或者view去看这个member,不需要再输入B或者V了.假设一个PDS中有很多member的,但是我们只想看TT开头的member,那么在PDS前输入 V /(TT*),那么就只列出TT开头的那些member了在删除很多的Member时候,每删除一个member都会跳出确认框, 我一般

20、在确认的地方输入;, 那么剩下要删除的member都不需要确认了.其实改member的名称的时候,我们可以在member前输入R,然后不要敲回车,按下Tab键,光标会跳到Prompt列(如果没记错名字), 输入新的member名,再敲回车.尤其在批量改名的时候,很管用如果用的是z/OS,这个命令应该是可以用的,OS/390我不确定,我是没用成功过. 在PDS里,在大量的member里搜索xxxxx,这个时候可以不用3.14了.在Command Line输入SRCHFOR xxxx就可以了我们经常想对一些PDS的属性排序,比如tracks,XT等等.然后就PF11,然后SORT XT. 其实我们

21、可以在XT上直接敲回车就可以了,这个是降序的,在member中一样有效我们写程序或者JCL的时候,经常需要插入很多空行,一般用I9.其实大家可以试试TE,这个命令会在当前行下插入空行一直到当前屏幕的最后一行. 有的时候我们可能需要顺序执行一些命令,大家可以试试用;. 比如说在编辑程序的时候,只想显示AAA的字段,我一般使用X ALL;F AAA ALL;DEL X ALL,然后敲回车,这样比单独的输入三次命令要快一些.(1)VSAM : Virtual Storage Access Method.是Z/OS系统中一种以访问方法命名的数据存储方式.比普通的数据集格式具有更高的存取效率.(2)VS

22、AM虽然是非传统的数据集组织形式,但是仍然是以记录为对象的(LDS除外),记录又被组织成CI ,然后CI 又组成 CA,(CONTROL AREA) ,VSAM存取时的基本单位是 CI (Control Interval)VSAM中每个CA均拥有相同数目的CI,CA的大小可以在建立VSAM的时候指定,CA的大小,最小为一个磁道,最大为一个柱面,VSAM数据集创建时所需要的磁盘空间大小是以CA的大小为单位进行分配的.CI的结构如下图所示:RDF 用来描述CI中的记录信息,包括记录的长度和起始位置,每一个RDF的长度为3个字节。CIDF则是用来描述CI中FREE SPACE的大小和位置,长度为4个

23、字节。第一个字段用来描述FREE SPACE的起始位置,第二个字段用来描述未用空间的长度。CA的结构如下图所示:在VSAM 中如果一条记录的长度超过了一个CI的大小,也是可以存放的,它被称为 SPANNED RECORD.但它只适用于KSDS与ESDS。(3)VSAM支持四种类型的数据集格式:KSDS : KEY SEQUENCED DATA SET 索引顺序数据集ESDS : ENTRY SEQUENCED DATA SET 入口顺序数据集RRDS : RELATIVE RECORD SEQUENCED DATA SET 相对记录数据集LDS : LINEAR DATA SET 线性数据集(

24、4)KSDS 中数据集记录的存放按照记录的索引顺序存放,KSDS的记录既支持顺序访问,也支持随机访问.KSDS 由两部分组成 : DATA COMPONENT 以及 INDEX COMPONENT。在KSDS 中,每条记录都有一个索引,记录按照索引的升序排列,索引的长度是相同的,索引值必须是唯一的而且是连续的。KSDS的逻辑记录可以是定长的也可以是变长的,KSDS的访问方法有:顺序存取,直接存取,定位顺序存取。(4)ESDS 仅由DATA COMPONENT 组成,其结构如下图所示:ESDS 跟 KSDS一样,其中的记录可以是定长,也可以是变长,但是CI中不能预留FREE SPACE。记录的存

25、入方式按记录写入的先后顺序排列,所以在本质上ESDS是一个顺序数据集。因为每一条记录的存储位置不能改变,因此增加记录只能在数据集的最后面,不允许从中间插入。更新记录时,新记录的升序必须跟原记录的长度一致此外对于不需要的记录,只能进行逻辑上的删除,无法从磁盘中真正的删除,所以要程序员自己掌握哪条记录是被删除了的。(5)与ESDS一样,RRDS中也仅由DATA COMPONENT 组成,其结构如下图所示:但是RRDS中只能存放定长记录,每个CI被分成了固定大小的SLOT,并且每个CI拥有相同数目的SLOT,每个SLOT都有一个相对记录编号。每一个SLOT对应一个RDF,标记该SLOT是否为空。(6

26、)LDS也只有DATA COMPONET部分,每个CI 都只有数据而没有控制信息。LDS数据集的记录不能为SPANNED RECORD,CI 的大小最小为4K,最大为32K。应用程序必须知道数据集的结构,才能对其进行操作。(7)操作VSAM的系统程序是 IDCAMS (IntegreteD Catalog Access Method Services) 集成编目访问方法服务,IDCAMS的主要功能有:定义主编目和用户编目定义VSAM数据集显示VSAM数据集的记录拷贝和备VSAM改变VSAM的某些属性,显示VSAM的属性和统计信息还有删除VSAMIDCAMS的命令格式 :常用命令如下:一: DE

27、FINE 用来定义编目,数据集,次索引数据集和路径二: DELETE用来删除DEFINE所建立的编目,数据集等三: ALTER更改编目中有关数据集属性的记录,或原先设定的某些参数四: BLDINDEX用来建立次索引数据集五: LISTCAT显示编目中的信息六: PRINT显示VSAM数据集中的记录七: REPRO复制数据集记录;产生编目的备用数据集;将顺序数据集转化成VSAM数据集;将VSAM数据集转化为顺序数据集;将记录写入VSAM数据集;重组VSAM数据集的组织。八: EXPORT将VSAM数据集或者编目中的记录进行导出操作。九: IMPORT将利用EXPORT导出的记录导回VSAM。(8

28、)DEMO JCL* Top of Data */CN00020A JOB ,CN0002,CLASS=A,MSGCLASS=B,/ MSGLEVEL=(1,1),NOTIFY=&SYSUID/CREVSAM EXEC PGM=IDCAMS/SYSPRINT DD SYSOUT=*/SYSIN DD *DEFINE CLUSTER ( -NAME(CN0002.B.TEST.KSDS) -RECORDS(3000 100) -RECORDSIZE(80 80) -KEYS(5 4) -) -DATA ( -NAME(CN0002.B.TEST.KSDS.DATA) -) -INDEX

29、( -NAME(CN0002.B.TEST.KSDS.INDEX) -)/* *Bottom of Data * Top of Data */CN00020A JOB ,CN0002,CLASS=A,MSGCLASS=B,/ MSGLEVEL=(1,1),NOTIFY=&SYSUID/CREVSAM EXEC PGM=IDCAMS/SYSPRINT DD SYSOUT=*/SYSIN DD *REPRO IDS(CN0002.A.COBOL.INPS) -ODS(CN0002.B.TEST.KSDS)/* Bottom of Data * Top of Data */CN00020A

30、JOB ,CN0002,CLASS=A,MSGCLASS=B,/ MSGLEVEL=(1,1),NOTIFY=&SYSUID/CREVSAM EXEC PGM=IDCAMS/SYSPRINT DD SYSOUT=*/INPUT DD DSN=CN0002.B.TEST.KSDS,DISP=SHR/SYSIN DD *PRINT INFILE(INPUT) CHAR/* Bottom of Data * Top of Data */CN00020A JOB ,CN0002,CLASS=A,MSGCLASS=B,/ MSGLEVEL=(1,1),NOTIFY=&SYSUID/CRE

31、VSAM EXEC PGM=IDCAMS/SYSPRINT DD SYSOUT=*/SYSIN DD *DELETE CN0002.B.TEST.KSDS/* Bottom of Data *(9)ISPF下面不可以直接浏览编辑VSAM文件,但可以用DITTO工具对VSAM进行操作,在COMMAND栏输入 TSO DITTO,就进入了DITTO界面如下:选 1 就会弹出:当然如果要进行编辑的话就要选 2再选 3 ,然后填入数据集名就可以了:然后就可以看到其中的内容了!(10)另一个可以对VSAM进行操作的工具是 FILE MANAGER ,具体操作查看手册.(11)世代数据集组GDG(GENE

32、RATION DATA GROUP)是一组编目的数据集,其组内的每一个数据集称为世代数据集或一代数据集,它们具有相同的名字且在时间序列上是相关的。如要求保留以年内的工资发放数据,每月的工资数据集就是一个世代数据集,全年12个月的工资数据集便构成了一个世代数据集组。世代数据集可以是顺序数据集或分区数据集,它可以写在磁盘或磁带上,但一个GDG的所有数据集应驻留在相同介质上。由于一个GDG中的所有数据集都使用相同的名字,所以要区分各个世代数据集,就要使用世代编号。世代编号可以是相对编号或绝对编号。系统在维护GDG时使用绝对编号,而应用程序员通常则使用相对编号。相对编号:假设由一个3代的GDG,PAY

33、ROLL.DATA(其中这3代数据集分别为8、9、10三个月份的数据,10月份数据为当前代数据集),则当前一代数据集(10月份的数据集)表示为:DSN=PAYROLL.DATA(0),上一代数据集(9月份的数据集)则表示为:DSN=PAYROLL.DATA(-1),更早一代的数据集(8月份的数据集)则表示为:DSN=PAYROLL.DATA(-2).如果在该GDG中要产生新一代(11月)数据集,则可写为DSN=PAYROLL.DATA(+1),由此可见这些相对编号时相对于当前一代数据集而言,当前一代数据集用零表示,在当前一代前存入的世代数据集用负数表示,在其之后存入的世代数据集用正数表示。绝对

34、编号:在每一个GDG名后加一个后缀GxxxxVyy,其中xxxx为绝对世代编号,yy是版本号(00-99),如果DSN=PAYROLL.DATA(0),对应的实际名字为:PAYROLL.DATA.G0004V00, 而DSN=PAYROLL.DATA(-1),则对应的实际名字为:PAYROLL.DATA.G0003V00。一个GDG中最多能保留255代数据集!1.GDG的定义及建立在建立GDG时,首先要为这个世代数据集组指定一个数据调用模式(DSCB模式),如系统中已经有这样的模式,可直接通过DCB参数引用,若没有这样的模式,则需要自己建立这个模式。注意,这个模式必须和所建立的GDG在同一个编

35、目卷上。在DSCB模式中应包括卷、卷标、GDG名、空间大小、数据控制块等,当GDG中的各代数据集的数据组织结构、属性不同时,则要实现定义多个模式为不同的数据集提供不同的DCB信息。DSCB模式的建立方法如下:/DEFMOD1 JOB /STEP0 EXEC PGM=IEFBR14/MODEL1 DD DSN=GDG01.MODEL,DISP=(,CATLG),/ DCB=(RECFM=FB,LRECL=80,BLKSIZE=800),/ VOL=SER=VSER03,UNIT=DISK,/ SPACE=(TRK,(0)作业中的EXEC语句调用程序IEFBR14,通常用于JCL语法检查,分配DA

36、SD空间及执行DD语句的DISP参数的处理,MODEL1 DD语句定义了数据用模式为GDG01.MODEL,指定了数据控制块、空间参数以及它所在的卷(VSER03),并对其进行编目。世代数据组GDG定义及建立过程如下(上述作业可并如下面这个作业中): /DEFGDG1 JOB /STEP1 EXEC PGM=IDCAMS/GDGMOD DD DSN=GDG01,DISP=(,KEEP),/ DCB=(RECFM=FB,LRECL=80,BLKSICE=3200),/ SPACE=(TRK,(0),UNIT=DISK,VOL=SER=VSER03/SYSPRINT DD SYSOUT=Z/SYS

37、IN DD * DEFINE GDG- (NAME(TSOID.MYGDG) - LIMIT (3) - NOEMPTY - SCRATCH)/ *在GOGMOD DD 语句中,定义了GDG名(TSOID.GDG01),在SYSIN DD 语句中通过DEFINE 命令及子参数定义了世代参数组的有关特性。其中NAME确定了GDG名(GDG01),它表示这个GDG 的每一代具有的名为:GDG01.GxxxxVyy ,这里“xxxx”是世代编号, “yy”是版本号;LIMIT(3)指定在GDG01中可以有三个世代数据集;EMPTY或NOEMPTY参数指出当GDG01中的世代数据集达到LIMIT给定的

38、最大数,而又要加入新的世代数据集时,是否将所有世代数据集移出GDG01,用EMPTY参数表示全部移出,NOEMPTY表示在GDG01中保留最新的三个世代数据集;SCRATCH或NOSCRATCH参数指出移出GDG01的世代数据集是否删除,SCRATCH参数表示删除,NOSCRATCH参数表示不删除。2. GDG的存入/ADDGDG JOB/STEP2 EXEC PGM=IEFBR14/GDGDD1 DD DSNAME=CN0002.BGDG(+1),DISP=(NEW,CATLG),/ SPACE=(TRK,(10,5),/ DCB=(RECFM=FB,LRECL=80,BLKSIZE=800

39、)/SYSPRINT DD SYSOUT=*/SYSIN DD * THIS IS THE FIRST GENERATION/ *作业中GDGDD1 DD语句在世代数据组中定义了第一个世代数据集。当第一次执行该JCL时,生成了一代,名为:CN0002.BGDG.G0001V00,再SUB一次,生成了CN0002.BGDG.G0002V00,再SUB一次,生成了CN0002.BGDG.G0003V00再SUB一次,生成了CN0002.BGDG.G0004V00,同时,因为世代总数已经超过了3,所以,最早的第一代数据集CN0002.BGDG.G0001V00就同时被删除掉了.同样,再SUB一次的话

40、就生成CN0002.BGDG.G0005V00,而CN0002.BGDG.G0002V00被删除.3.GDG的读取 /LSGDG JOB /STEP3 EXEC PGM=IEBGENER/SYSPRINT DD SYSOUT=*/SYSUT1 DD DSNAME=GDG01(0)/SYSUT2 DD SYSOUT=*/SYSIN DD DUMMY这个作业是将GDG01中的当前一个世代数据集(也就是说最近创建的那一个)读取出来,存放在作业的输出列表中,所读取的世代数据集通过SYSUT1 DD语句确定。假如当前3代并未添加满,或者说最新一代数据集被手动DELETE掉了,那么总之就是堆栈上面最上一代

41、的数据集被指为 0 !4.GDG的删除删除一个GDG不像其他类型的数据集那样简单,它需要以下三个步骤:(1)删除GDG中的各个世代数据集(提交JCL作业或用ISPF方式删除)。(2)删除各个世代数据集的数据调用模式(提交JCL作业或用ISPF方式删除)。(3)删除世代数据集组(只能通过AMS中的DELETE命令删除)。完成上述三个步骤的作业如下:/DELGDG JOB ./STEP4 EXEC PGM=IEFBR14/DMODEL DD DSN=GDG01.MODEL,DISP(OLD,DELETE),/ VOL=SER=VSER03,UNIT=DISK/STEP5 EXEC PGM=IDCA

42、MS/SYSPRINT DD SYSOUT=*/SYSIN DD * DELETE - GDG01.G0001V00 - PURGE DELETE - GDG01 - GENERATIONDATAGROUP - PURGE/*STEP4 EXEC语句删除的是世代数据集数据调用模式,在STEP5 EXEC语句中先删除的是这个GDG中仅有的世代数据集,若还有其它世代数据集都应在此进行删除,最后将世代数据集组名从目录中删除,这里GENERATIONDATAGROUP参数用来指明要删除的GDG01的类型是世代数据集组,如果类型不对,将不进行这步操作;PURGE参数表示在删除这个GDG时,忽略它的保留期

43、。VSAM : Virtual Storage Access Method.是Z/OS系统中一种以访问方法命名的数据存储方式.比普通的数据集格式具有更高的存取效率.VSAM虽然是非传统的数据集组织形式,但是仍然是以记录为对象的(LDS除外),记录又被组织成CI ,然后CI 又组成 CA,(CONTROL AREA) ,VSAM中每个CA均拥有相同数目的CI,CA的大小可以在建立VSAM的时候指定,CA的大小,最小为一个磁道,最大为一个柱面,CIDF则是用来描述CI中FREE SPACE的大小和位置,长度为4个字节。第一个字段用来描述FREE SPACE的起始位置,第二个字段用来描述未用空间的长

44、度。在VSAM 中如果一条记录的长度超过了一个CI的大小,也是可以存放的,它被称为 SPANNED RECORD.但它只适用于KSDS与ESDS。在KSDS 中,每条记录都有一个索引,记录按照索引的升序排列,索引的长度是相同的,索引值必须是唯一的而且是连续的。ESDS 跟 KSDS一样,其中的记录可以是定长,也可以是变长,但是CI中不能预留FREE SPACE。记录的存入方式按记录写入的先后顺序排列,所以在本质上ESDS是一个顺序数据集。因为每一条记录的存储位置不能改变,因此增加记录只能在数据集的最后面,不允许从中间插入。更新记录时,新记录的升序必须跟原记录的长度一致此外对于不需要的记录,只能

45、进行逻辑上的删除,无法从磁盘中真正的删除,所以要程序员自己掌握哪条记录是被删除了的。但是RRDS中只能存放定长记录,每个CI被分成了固定大小的SLOT,并且每个CI拥有相同数目的SLOT,每个SLOT都有一个相对记录编号。每一个SLOT对应一个LDS也只有DATA COMPONET部分,每个CI 都只有数据而没有控制信息。LDS数据集的记录不能为SPANNED RECORD,CI 的大小最小为4K,最大为32K。应用程序必须复制数据集记录;产生编目的备用数据集;将顺序数据集转化成VSAM数据集;将VSAM数据集转化为顺序数据集;ISPF下面不可以直接浏览编辑VSAM文件,但可以用DITTO工具

46、对VSAM进行操作,在COMMAND栏输入 TSO DITTO,就进入了DITTO界面如下:世代数据集组GDG(GENERATION DATA GROUP)是一组编目的数据集,其组内的每一个数据集称为世代数据集或一代数据集,它们具有相同的名字且在时间序列上是相关的。如要求保留以年内的工资发放数据,每月的工资数据集就是一个世代数据集,全年12个月的工资数据集便构成了一个世代数据集组。世代数据集可以是顺序数据集或分区数据集,它可以写在磁盘或磁带上,但一个GDG的所有数据集应驻留在相同介质上。由于一个GDG中的所有数据集都使用相同的名字,所以要区分各个世代数据集,就要使用世代编号。世代编号可以是相对

47、编号或绝对编号。系统在维护GDG时使用绝对编号,而应用程序员通常则使用相对编号。相对编号:假设由一个3代的GDG,PAYROLL.DATA(其中这3代数据集分别为8、9、10三个月份的数据,10月份数据为当前代数据集),则当前一代数据集(10月份的数据集)表示为:DSN=PAYROLL.DATA(0),上一代数据集(9月份的数据集)则表示为:DSN=PAYROLL.DATA(-1),更早一代的数据集(8月份的数据集)则表示为:DSN=PAYROLL.DATA(-2).如果在该GDG中要产生新一代(11月)数据集,则可写为DSN=PAYROLL.DATA(+1),由此可见这些相对编号时相对于当前

48、一代数据集而言,如果DSN=PAYROLL.DATA(0),对应的实际名字为:PAYROLL.DATA.G0004V00, 而DSN=PAYROLL.DATA(-1),则对应的实际名字为:PAYROLL.DATA.G0003V00。可直接通过DCB参数引用,若没有这样的模式,则需要自己建立这个模式。注意,这个模式必须和所建立的GDG在同一个编目卷上。作业中的EXEC语句调用程序IEFBR14,通常用于JCL语法检查,分配DASD空间及执行DD语句的DISP参数的处理,MODEL1 DD语句定义了数据用模式为GDG01.MODEL,指定了数据控制块、空间参数以及它所在的卷(VSER03),并对其

49、进行编目。在GOGMOD DD 语句中,定义了GDG名(TSOID.GDG01),在SYSIN DD 语句中通过DEFINE 命令及子参数定义了世代参数组的有关特性。其中NAME确定了GDG名(GDG01),它表示这个GDG 的每一代具有的名为:GDG01.GxxxxVyy ,这里“xxxx”是世代编号, “yy”是版本号;LIMIT(3)指定在GDG01中可以有三个世代数据集;EMPTY或NOEMPTY参数指出当GDG01中的世代数据集达到LIMIT给定的最大数,NOEMPTY表示在GDG01中保留最新的三个世代数据集;SCRATCH或NOSCRATCH参数指出移出GDG01的世代数据集是否

50、删除,SCRATCH参数表示删除,NOSCRATCH参数表示不删除。当第一次执行该JCL时,生成了一代,名为:CN0002.BGDG.G0001V00,再SUB一次,生成了CN0002.BGDG.G0002V00,再SUB一次,生成了CN0002.BGDG.G0003V00再SUB一次,生成了CN0002.BGDG.G0004V00,同时,因为世代总数已经超过了3,所以,最早的第一代数据集CN0002.BGDG.G0001V00就同时被删除掉了.同样,这个作业是将GDG01中的当前一个世代数据集(也就是说最近创建的那一个)读取出来,存放在作业的输出列表中,所读取的世代数据集通过SYSUT1 D

51、D语句确定。假如当前3代并未添加满,或者说最新一代数据集被手动DELETE掉了,那么总之就是堆栈上面最上一代的数据集被指为 0 !STEP4 EXEC语句删除的是世代数据集数据调用模式,在STEP5 EXEC语句中先删除的是这个GDG中仅有的世代数据集,这里GENERATIONDATAGROUP参数用来指明要删除的GDG01的类型是世代数据集组,如果类型不对,将不进行这步操作;PURGE参数表示在删除这个GDG时,忽略它的保留期。(1)JCL必须作为一个成员存在于PDS 中,并且,必须是定长记录,长度为80字节的数据集.(2)JCL中续行的内容只能从4-16列之内开始,否则会出错!(3)JOB

52、语句的位置参数有两个: ACCOUT INFO, PROGRAMMER NAME(4)EXEC语句的COND参数的用法:COND对先前执行的作业步的返回码进行测试,以决定是否执行本作业步.作业中的第一步若出现COND参数,将被系统自动忽略.例如: COND=(8,LT),看COND条件的方法是从右往左看,如上面即是如果返回码小于8,则执行本作业步!JCL中,如果上一作业步异常终止了,那么将终止整个作业步,不再往下执行,那么有时候需要即使某一作业步异常终止了,也要往下执行的情况,就需要下面这个COND条件:COND=EVEN, 表示 即使前一作业步异常终止了,本作业步仍然要执行.COND=ONL

53、Y, 表示 只有前一作业步异常终止了,才执行本作业步,相当于一个异常对应功能.(5)DISP中,如果省略了第一个字段,默认为NEW,省略了第二个字段,如果是新建数据集,则为DELETE,如果是已有数据集,则是KEEP,如果省略了第三个字段,跟第二个的情况一样.如果没有给出DISP参数,默认为DISP=(NEW,DELETE,DELETE)(6)DD语句的RLSE参数:指明当数据集关闭时,没有用到的空间被释放掉.数据集必须是为写入打开,并且最后一个操作是写入时才起作用!(7)JOBLIB为本JOB指定一个专用库,EXEC语句调用的程序,会先去该目录下找,找不到了,才去系统过程库中去找.JOBLI

54、B语句必须紧跟在JOB语句之后,中间不能有其它语句.例:/JOBLIB DD DSN=CN0002.MY.LOADLIB,DISP=SHR,/ DD DSN=CN0002.GRP.LOADLIB,DISP=SHR(8)JOBCAT为本JOB指定一个专用目录,系统按照名字去查找用到的数据集时,先到该目录中去找,找不到时再到主目录或者根据数据集前缀去相应的目录下找.(9)STEPLIB为本STEP指定了一个专用库,EXEC语句调用的程序会先去该目录下找,找不到时再去系统库中去找,使用STEPLIB的时候,JOBLIB语句相当于被忽略掉了.(10)STEPCAT为本STEP指定一个专用目录,系统按照

55、名字去查找用到的数据集时,先到该目录中去找,找不到时再到主目录或者根据数据集前缀去相应的目录下找.使用STEPCAT将覆盖掉JOBCAT语句.(11)SYSABEND,SYSDUMP,SYSUDUMP语句指定了系统向哪里输出DUMP,下面情况下会生成DUMP:作业步非正常结束作业程序非正常结束,但系统恢复功能使作业步正常结束.SYSDUMP DD 语句产生系统区和程序区的DUMP,数据没有格式化,是程序才以识别的二进制数据.SYSUDUMP DD 语句产生用户区DUMP,内容是格式化过的,可以直接打印.SYSABEND DD语句产生一个用户和系统区的DUMP,包括SYSUDUMP中的所有数据以

56、及:本地系统队列区(LSQA),包括229,230,249子池.失败任务的IO系统控制块DUMP是格式化了的,可直接打印.(12)JCLLIB语句为JOB内所调用的编目过程指定了位置,如/PROCLIBJCLLIBORDER=COBOL.V3R1.SIGYPROC,COBOL.MY.PROC.说明该JOB中如果调用到了什么过程,就去上面的位置找,并且按先后顺序。要注意 JCLLIB 与 JOBLIB 的区别!JCLLIB指向的编目过程只是另一段JCL,而JOBLIB指向的是LOAD MODULE库,里面是可执行程序。(12)如果一个DD语句没有命名,那么系统会把它当成SYSIN DD 语句(1

57、3)一个JCL JOB中最多只能有15个流内过程(14)一个PROC中不能出现以下语句 :JOB语句流内数据定义语句 : DD* 到 /*JCL结束语句 空的一行 /JOBLIB 和 JOBCAT 语句对于一个JOB作业,如果只想在提交后检查其语法错误,该加什么参数?TYPRUN = SCAN!(15)编目过程放在一个分区数据集的成员里,语法与流内过程一样,但不需要使用PEND语句流内过程的代码必须写在调用之前!(16)过程的调用可以用:STEP1 EXEC PROC=MYPROCSTEP2 EXEC MYPROC两种方式.(17)调用过程时的语句覆盖:(18)以IEH打头的都是系统实用程序以

58、IEB打头的都是数据集实用程序以IBC打头的都是独立实用程序(19)JCL实验创建顺序和分区数据集:JOB1/TE001A JOB (123456),PAUL,MSGLEVEL=(1,1), / NOTIFY=TE001,MSGCLASS=A,CLASS=A,REGION=512K /STEP1 EXEC PGM=IEFBR14 /DD1 DD DSN=TE001.DATA3.PO,SPACE=(TRK,(5,2,2),DISP=(NEW,CATLG), / VOL=SER=USER02,UNIT=SYSDA,RECFM=FB,LRECL=80,BLKSIZE=800 /DD2 DD DSN=

59、TE001.DATA3.PS,SPACE=(TRK,1),DISP=(NEW,CATLG), / VOL=SER=USER02,UNIT=SYSDA,RECFM=FB,LRECL=80,BLKSIZE=800 删除数据集:JOB2/TE001B JOB (123456),PAUL,MSGLEVEL=(1,1), / NOTIFY=TE001,MSGCLASS=A,CLASS=A /STEP1 EXEC PGM=IEFBR14 /DD1 DD DSN=TE001.TEAM.ONE,DISP=(OLD,DELETE) / 将一个PS顺序数据集TE001.PS1分割成3部分,以成员形式存储在PO分区

60、数据集TE001.PO2中:JOB3/STEP1 EXEC PGM=IEBGENER/ SYSUT1 DD DSN=TE001.PS1/SYSUT2 DD DSN=TE001.PO2/SYSIN DD*GENERATE MAXNAME=3,MAXGPS=2MEMBER NAME=MEM1RECORD IDENT=(8,FIRSTMEM,1) (前8列没有FIRSTMEM字符,FIRST包含在MEM1里)MEMBER NAME=MEM2RECORD IDENT=(8,SECNDMEM,1) (前8列没有SECNDMEM字符)MEMBER NAME=MEM3从TE001.PS1中选中一些列存储到PS顺序数据集TE001.PS2中:JOB4/SYSI

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论