设为首页 收藏本站
查看: 1532|回复: 0

[经验分享] IBM大型机操作系统 学习笔记(3)

[复制链接]

尚未签到

发表于 2017-5-26 12:25:22 | 显示全部楼层 |阅读模式
  学习主机已有近一个礼拜,基本操作只能马马虎虎,说到写JCL控制语句,真是惭愧.我花了很多时间来整理JCL语法、参数等信息,并做了一篇很长很长的类似帮助文档的笔记。不过,那只是开始,还是在理论阶段。对动手能力的提高帮助不大。这篇笔记就是专门为提高实际动手能力而写的,也是上课的内容。
  实用程序UTILITY介绍:
  一、系统实用程序
· IEH打头,主要功能是维护和管理系统、用户数据集和整个盘卷;
· 系统实用程序及其功能如下
1、IEHNITT:为磁带卷写标号;
2、IEHLIST:系统控制数据信息列表;
3、IEHMOVE:移动或拷贝若干组数据、移动或拷贝整个卷、移动或拷贝编目目录等;
4、IEHPROGM:建立及维护系统控制数据、建立时代数据组索引、重命名磁带卷、删除数据集等;
5、IEHDASDR:初始化一个直接存取卷。
  二、数据集实用程序
  · IEB打头,它的主要功能是对数据集或数据集记录进行组织、修改或比较。
· 可以作为单个作业来执行,也可以作为某个程序的子程序被调用。
· Notes:这些数据维护实用程序不能用于VSAM数据集。
  数据集实用程序:
0、IEBGENER:拷贝顺序数据集记录或将顺序数据集转换为分区数据集;
1、IEBCOPY:拷贝、压缩或合并分区数据集及扩展分区数据集;
2、IEBPTPCH:打印或穿卡输出一个数据集
3、IEBCOMPR:比较顺序数据集、分区数据集或扩展分区数据集;
4、IEBISAM:卸载、装载、拷贝或打印ISAM数据集;
5、IEBUPDATE:对顺序、分区数据集或扩展分区数据机进行合并修改。
  三、独立实用程序
· IBC开头,是一种特殊的实用程序,可独立于操作系统运行,通常被存放在磁带上。当系统出现重大故障而又无法恢复时,利用系统转储磁带,恢复系统盘卷。如:
1、IBCDASDI:用于初始化和分配一个直接存取卷上的可用的实用程序;
2、IBCDUMPRS:是转储或再存储直接存取卷数据应用程序。
  
  
  实用程序的调用:
· 实用程序的调用方法有两种, 一种是在ISPF下用TSO的CALL命令调用, 另一种是通过JCL语句调用。
  JCL语句调用方式:
  //UTLFM JOB …
//STEP EXEC PGM=utility 调用公用程序
//SYSPRINT DD 系统输出数据集(SYSOUT)
//SYSUT1 DD … 输入数据集
//SYSUT2 DD … 输出数据集
//SYSIN DD … 定义实用程序使用的控制流/控制语句
COPY …
SELECT …
EXECLUDE …
  UTILITY控制语句格式:
不以‘//’开头,分为4个区:
- 标签区(可选)
- 操作区(必须)
- 操作数区(必须)
- 注释区(可选)
  [IEBGENER]
  功能:
  –IEBGENER是用于建立,拷贝,打印SEQUENTIAL数据集的实用程序
  模板:
  //ST018 JOB NOTIFY=ST018,MSGLEVEL=(1,1)
//STEP EXEC PGM=IEBGENER
//SYSPRINT DD SYSOUT=*
//SYSUT1 DD …
//SYSUT2 DD …
//SYSIN DD …

  ......
  .....
说明:
  IEBGENER的JCL语句:
– EXEC语句指定要执行的程序
– SYSPRINT DD语句定义输出信息数据集
– SYSUT1 DD语句定义输入数据集
– SYSUT2 DD语句定义输出数据集
– SYSIN DD语句定义控制数据集,如果不需要控制语句,可以如下表示//SYSIN DD DUMMY
IEBGENER的控制语句:
– GENERATE
– MEMBER & RECORD · 将顺序数据集划分为多个成员
– RECORD · 只选中或打印顺序数据集的部
  例1:分配一个PS顺序数据集st018.test1.test1,并且拷贝输入流数据到这个数据集中
  000100 //ST018A JOB NOTIFY=ST018,MSGLEVEL=(1,1)
000200 //STEP1 EXEC PGM=IEBGENER
000300 //SYSPRINT DD SYSOUT=*
000400 //SYSUT1 DD *
000500JONES FRED 53AF 87 5701 NINE MILE ROAD
000600ANDERSON DON 78AF 34 320 WESTHEIMER #219
000710 //SYSUT2 DD DSN=ST018.TEST1.TEST1,DISP=(NEW,CATLG,DELETE),
000800 //SPACE=(TRK,(1,1)),VOL=SER=USER02,
000900 //RECFM=FB,LRECL=80,UNIT=SYSDA
001000 //SYSIN DD DUMMY
  例2:复制PS顺序数据集
  000100 //ST018 JOB NOTIFY=ST018,MSGLEVEL=(1,1)
000200 //STEP1 EXEC PGM=IEBGENER
000300 //SYSPRINT DD SYSOUT=*
000400 //SYSUT1 DD DSN=ST018.SDS.DATA,DISP=SHR
000500 //SYSUT2 DD DSN=ST018.TEST1.TEST1,DISP=OLD
000600 //SYSIN DD DUMMY
  例3:将一个PS顺序数据集st018.sds.data分割成3部分,以成员形式存储在PO分区数据集st018.test.po中
  000100 //ST018A JOB NOTIFY=ST018,MSGLEVEL=(1,1)
000200 //STEP1 EXEC PGM=IEBGENER
000300 //SYSPRINT DD SYSOUT=*
000400 //SYSUT1 DD DSN=ST018.SDS.DATA,DISP=SHR
000500 //SYSUT2 DD DSN=ST018.TEST.PO,DISP=(NEW,CATLG,DELETE),
000600 // SPACE=(TRK,(1,1,1)),VOL=SER=USER02,
000700 // RECFM=FB,LRECL=80,UNIT=SYSDA
000800 //SYSIN DD *
000900GENERATE MAXNAME=3,MAXGPS=2
001000MEMBER NAME=MEM1
001100RECORD IDENT=(8,'FIRSTMEM',2)
001200MEMBER NAME=MEM2
001300RECORD IDENT=(8,'SECNDMEM',2)
001400MEMBER NAME=MEM3
  例4:从源PS顺序数据集ST018.SDS.DATA中选中一些列存储在目标PS顺序数据集ST018.TEST1.TEST1中....
  000100 //ST018A JOB NOTIFY=ST018,MSGLEVEL=(1,1)
000200 //SETP1 EXEC PGM=IEBGENER
000300 //SYSPRINT DD SYSOUT=*
000400 //SYSUT1 DD DSN=ST018.SDS.DATA,DISP=SHR
000500 //SYSUT2 DD DSN=ST018.TEST1.TEST1,DISP=OLD
000600 //SYSIN DD *
000700GENERATE MAXFLDS=3
000800RECORD FIELD=(10,1,,1),FIELD=(10,11,,20),FIELD=(10,21,,30)
  例5:打印/显示顺序数据集ST018.SDS.DATA
  000100 //ST018 JOB NOTIFY=ST018,MSGLEVEL=(1,1)
000200 //STP1 EXEC PGM=IEBGENER
000300 //SYSPRINT DD SYSOUT=*
000400 //SYSUT1 DD DSN=ST018.SDS.DATA,DISP=SHR
000500 //SYSUT2 DD SYSOUT=*
000600 //SYSIN DD DUMMY
  以上例子说明:
  –SYSIN DD * 语句标识输入数据流记录控制语句;
  –GENERATE语句表示调用编辑功能,操作数MAXFLDS=3 表示后面的RECORD语句最多描述三个区域;
  –RECORD语句通过FIELD参数描述输入输出区域,其格式为:
  –FIELD=(LENGTH OF FIELD,POSITION IN INPUT,CONVERSION,POSITION IN OUTPUT)
  
  ^^^^^待续~~~~~~~~~~~~~~~~
  续>>(7.18)
  [IEBCOPY]
  EBCOPY主要功能:
  –拷贝完整的数据集或部分数据集;
  –建立分区数据集或扩展分区数据集的备份,备份是存放在磁带或磁盘上的顺序数据集;
  –变更分区数据集或扩展分区数据集的成员、为选择的成员更换新名;
  –对加载模块进行拷贝和重新组块。
  模板:
  JOB
  EXEC PGM=IEBCOPY
  SYSPRINT DD SYSOUT=*
  SYSUT1 DD 输入数据集
  SYSUT2 DD 输出数据集
  SYSUT3 DD 溢出数据集#可以省略
  SYSUT4 DD 溢出数据集#可以省略
  SYSIN DD * 控制语句#如不需要控制语句,可写成SYSIN DD DUMMY
  COPY
  SELECT
  EXECLUDE
  COPY:启动一个或多个拷贝、写或加载操作
  1.格式:label COPY OUTDD=ddname,INDD=({ddname| (ddname,R)},…),LIST={YES|NO}
  2.操作数说明:
  ·“OUTDD=”:指定输出的分区数据集名,这里的数据集必须是本作业步中的一个DD语句名;
  ·“INDD=({ddname| (ddname,R)},…)”:指定输入分区数据集,对于卸载操作只能指定一个ddname,这里的R表示从输入的数据集中选择所有的成员进行相应的操作,此时不需设置SELECT语句。
  ·“LIST={YES|NO}”:指出是否将拷贝的成员名列在SYSPRINT数据集中,取值为YES时将成员名列表。
  注意:
  –如果为拷贝操作,输入数据集和输出数据集必须是分区数据集、扩展分区数据集或卸载模块结果的顺序数据集;
  –如果是加载操作,输入数据集必须是分区数据集或顺序数据集,而输出数据集则必须是分区数据集;
  –如果是卸载操作,输入数据集必须是分区数据集、扩展分区数据集或顺序分区数据集,输出数据集可以驻留在直接存取卷上,也可以驻留在磁带卷上。当驻留在磁带卷上时,它的组织结构必须是顺序数据集,且要指定省略目录或缩影值得SPACE参数。
  SELECT:确定输入数据集中要拷贝的成员名
  1.格式:label SELECT MEMBER=({name1| (name1,newname1,R) | (name1,,R)},{name2| (name2,newname2,R) | (name2,,R)},…..)
  2.操作数说明:·“MEMBER=…”:name确定拷贝的成员名;newname确定拷贝输出的成员名,如果这个名字在输出分区数据集中已存在,则这个成员不被拷贝,除非同时设置R参数,newname和ALTERMOD不能同时使用。
  EXCLUDE:确定输入数据集中不被拷贝和不加载的成员
  1.格式:label EXCLUDE MEMBER=(name1, name2, name3…..)
  2.操作数说明:·“MEMBER=…”:name确定不被拷贝的成员名
  例1,拷贝整个分区数据集,不拷贝名字相同的成员
  000100 //ST018A JOB NOTIFY=ST018,MSGLEVEL=(1,1)
000200 //STP1 EXEC PGM=IEBCOPY
000300 //SYSPRINT DD SYSOUT=*
000400 //SYSUT1 DD DSN=ST018.PDS.DATA,DISP=SHR
000500 //SYSUT2 DD DSN=ST018.TEST.PO,DISP=(NEW,CATLG,DELETE),
000600 // SPACE=(TRK,(5,1,2)),VOL=SER=USER02,UNIT=SYSDA
  注意:SYSIN DD * 语句可以省略
  例2,拷贝整个分区数据集,拷贝且覆盖名字相同的成员
  000100 //ST018A JOB NOTIFY=ST018,MSGLEVEL=(1,1)
000200 //STP1 EXEC PGM=IEBCOPY
000300 //SYSPRINT DD SYSOUT=*
000400 //DD1 DD DSN=ST018.PDS.DATA,DISP=SHR
000500 //DD2 DD DSN=ST018.TEST.PO,DISP=OLD
000600 //SYSIN DD *
000700COPY OUTDD=DD2,INDD=((DD1,R))#留意参数格式
  例3,仅拷备和置换被选择的分区数据集成员
  000100 //ST018A JOB NOTIFY=ST018,MSGLEVEL=(1,1)
000200 //STP1 EXEC PGM=IEBCOPY
000300 //SYSPRINT DD SYSOUT=*
000400 //DD1 DD DSN=ST018.PDS.DATA,DISP=SHR
000500 //DD2 DD DSN=ST018.TEST.PO,DISP=OLD
000600 //SYSIN DD *
000700COPY OUTDD=DD2,INDD=(DD1)
000800SELECT MEMBER=(IEBCOPY1,(IEBCOPY2,R))
  例4, 拷备时排除一些分区数据集成员
  //ST018A JOB NOTIFY=ST018,MSGLEVEL=(1,1)
//STP1 EXEC PGM=IEBCOPY
//SYSPRINT DD SYSOUT=*
//DD1 DD DSN=ST018.PDS.DATA,DISP=SHR
//DD2 DD DSN=ST018.TEST.PO,DISP=OLD
//SYSIN DD *
COPY OUTDD=DD2,INDD=(DD1)
SELECT MEMBER=(IEBCOPY1,(IEBCOPY2,R))
  [IEPTPCH]
  IEBPTPCH的功能:
  –用来打印整个顺序数据集
  –用来打印整个分区数据集或分区数据集的一个/多个成员
  –用来打印顺序数据集或分区数据集成员的一部分内容(指所有记录的某些字段或一些记录的某些字段)
  模板:
  JOB
  EXEC PGM= IEBPTPCH
  SYSPRINT DD SYSOUT=*
  SYSUT1 DD 输入数据集
  SYSUT2 DD 输出数据集
  SYSIN DD * 控制语句#可以是//SYSIN DD DUMMY
  PRINT
  TITLE
  RECORD
  MEMBER
  IEBPTPCH的控制语句说明:
  –PRINT控制语句指定输入流记录以物理顺序组织
  –TITLE控制语句指定输出的标题·格式TITLE ITEM=(title, col. to start it in),ITEM=(…), …
  –RECORD语句通过FIELD参数描述输入输出区域
  (1) 格式RECORD FIELD=(length of field,positionin input,conversion,positionin output)
  (2) FIELD=(80)
  –RECORD语句通过IDENT参数描述选中的记录
  (1) 格式RECORD IDENT=(length<=8,’literal’,input-location)
  (2) 用于决定最后一条记录
  –RECORD IDENT 和FIELD一起使用
  (1) 使用IDENT确定FIELD起作用的记录范围
  (2) 使用FIELD确定选取的字段
  –MEMBER NAME=…
  ·Supply PDS member name to be printed.
  ·If omitted when printing a pds, it prints all members.
  ·Must specify TYPORG=PO if printing pdsmembers because default is PS.
  –MEMBER 和RECORD一起使用
  ·All RECORD statements that follow a MEMBER statement pertain to the member indicated in the member statement.
  ·If no RECORD statements follow, the member is printed with the default conditions.
  [IEHLIST]
  JOB
  EXEC PGM= IEHLIST
  SYSPRINT DD SYSOUT=*
  SYSIN DD * 控制语句
  LISTVTOC
  LISTCTLG
  LISTPDS
  IEHLIST的功能
  用于列出DASD VTOC的内容
  用于列出CATALOG的内容
  用于列出PDS的目录
  IEHLIST的JCL语句
  SYSIN DD语句定义控制数据集
  IEHLIST的控制语句
  –LISTVTOC
  – LISTCTLG
– LISTPDS DSNAME=( LISTPDS DSNAME=(pdsname,pdsname pdsname,pdsname)
– 显示格式显示格式
  · DUMP DUMP or or FORMAT FORMAT
  –控制语句中的DSNAME不能简写成DSN
  –控制语句中的VOL参数格式为VOL=XXXXX=YYYYYY, 其中XXXXX是DD语句中的UNIT参数定的值而YYYYYY是SER参数指定的值
  ·例子OL=SYSDA=USER01 or VOL=3390=USER01x
  [IEBCOMPR]
  JOB
  EXEC PGM= IEBCOMPR
  SYSPRINT DD SYSOUT=*
  SYSUT1 DD 参与比较的数据集
  SYSUT2 DD 参与比较的数据集S
  YSIN DD * 控制语句
  COMPARE
  EXTS
  LABELS
  IEBCOMPR的功能
  可以用于比较SDS和PDS
  以记录为单位进行比较
  常用于检测备份
  IEBCOMPR的JCL语句
  SYSUT1 DD语句定义参与比较的数据集
  SYSUT2 DD语句定义参与比较的数据集
  SYSIN DD语句定义控制数据集
  IEBCOMPR的控制语句
  COMPARE TYPORG=PS|PO
  EXTS identifies user exit routines to be used
  LABELS whether user labels are to be treated as data
  [SORT]
  JOB
  EXEC PGM= SORT
  SYSOUT DD SYSOUT=*
  SORTIN DD 输入数据集
  SORTOUT DD 输出数据集
  SYSIN DD * 控制语句
  SORT
  SORT的功能
  对数据集内容进行排序
  SORT的JCL语句
  SORTIN DD语句定义输入的待排序数据集,可以有多个
  SORTOUT DD语句定义输出的已排序后的数据集
  SYSIN DD语句定义控制数据集
  SORT的控制语句
  SORT FIELDS=(start column, length, sort method, a/d )
  OUTFIL FNAMES=指定输出数据集
  小结:
  第一次写JCL调用实用程序,难免会有些磕磕碰碰,所以不可避免犯了些低级错误.
  错误归结:
  1、MSGLEVEL(1,1)#忘记写等号
  2、noplaceto directory#创建PDS时directory block设置太小,所以不能再创建成员.
  3、MEMBER 执行错误#参数名超过8个字符。。老师说如果某个名字超过8个字符,就得警惕
  4、使用COPY参数时,OUTDD的值不能加括号! INDD的值必须加括号! INDD=(DD2,R)是错的
  5、SELECT和EXCLUDE参数不可同时出现,否则出错。
  重要点:创建数据集时,SPACE(TRK,(1,,A)).其中,A=0时,代表创建的是SDS,A>0时,代表创建的是PDS,切记切记!!

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-381396-1-1.html 上篇帖子: IBM Java英文面试题(附参考答案) 下篇帖子: IBM大型机操作系统 学习笔记(2)
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表