JCL中utilities的使用
实验目的
Utilities的使用
实验要求
1. IEBCOMPR的作用
2. IEBCOPY,主要功能等
3. SORT/DFSORT/ICEMAN
4. IEHLIST至少两个例子,一个VTOC,一个PDS
5. IEBPTPCH (Print-Punch) Program的主要功能
6. 思考:IEBDG (Test Data Generator) Program说明其作用,及简单用法举例
实验过程
Iebcompr
1. 概述
a) 功能
用于两个数据集的在逻辑记录层面上(顺序存储的内容)进行比较。
b) 限制
i. 可以用来比较两个同种类型的数据集,
ii. 支持类型有PS,PDS,PDSE
iii. 数据格式支持fixed,variable,undefined
iv. 存储类型支持blocked,unblocked,member
v. 不可用来比较load modules
c) 相等的条件
i. 对于顺序数据集
1. 数据集有相同数量的记录,
2. 对应的记录相同
3. 记录长度相同
ii. 对于分区数据集
1. 对应的成员包含相同数量的数据
2. 对应的记录相同
3. 对应分区的用户数据相同
4. 记录长度相同
d) 处理
i. 条件不满足时,会输出此记录所在块号以及dd定义的语句。
ii. 十条记录不匹配时,如果用户没有提供错误处理程序,程序结束,
e) 注意
i. 不要比较存放在不同设备上的Load modules ,因为大多数情况下,都不相等。
ii. 分区数据集只有在其中一个分区中的每一项都能在另一个分区中找到名字对应相同的项时,才可以比较。(在成员上,一个必须是另一个的子集)
f) 参数
SYSPRINT |
Iebcompr的输出数据 |
顺序数据集,记录长121,可以写在SYSOUT中 |
SYSUT1 |
要被比较的数据集 |
格式相同,记录格式相同,块大小可以不同 |
SYSUT2 |
要被比较的数据集 |
|
SYSIN |
控制语句 |
当比较分区数据集时,必有内容,否则dummy |
g) 控制语句
i. COMPARE
必须出现在第一句,参数为TYPORG={PS|PO},指定输入数据格式为{顺序|分区}
ii.
2. 实例一
a) 源程序
****** ***************************** Top of Data ******************************
000100 //UR644CPR JOB ,MARTIN,CLASS=A,MSGCLASS=A,MSGLEVEL=(1,1),NOTIFY=&SYSUID
000200 //COPY EXEC PGM=IEBGENER
000300 //SYSUT2 DD DSN=UR644.JCL.OUTPUT(CPR#OUT1),DISP=(OLD,PASS,DELETE),
000400 // SPACE=(TRK,(1,1,1)),UNIT=SYSDA,RECFM=FB,LRECL=80
000500 //SYSUT1 DD DSN=UR644.JCL.OUTPUT(CP1#OUT),DISP=(SHR,PASS)
000600 //SYSPRINT DD SYSOUT=*
000700 //SYSIN DD DUMMY
000800 //*********************************************************************
000810 //COMPARE EXEC PGM=IEBCOMPR
000900 //SYSUT1 DD DSN=*.COPY.SYSUT1,DISP=SHR
001000 //SYSUT2 DD DSN=*.COPY.SYSUT2,DISP=SHR
001100 //SYSIN DD DUMMY
001200 //SYSPRINT DD SYSOUT=*
****** **************************** Bottom of Data ****************************
b) 输出
i. Cp1#out中的内容
****** ***************************** Top of Data ******************************
000500 MARTIN 200992403 19901031
000600 FEDORA 200882463 19891209
000700 VENCET 203311214 19898791
****** **************************** Bottom of Data ****************************
ii. 队列中输出结果
********************************* TOP OF DATA **********************************
COMPARE UTILITY
END OF JOB-TOTAL NUMBER OF RECORDS COMPARED = 00000003
******************************** BOTTOM OF DATA *******************************
c) 分析
比较两个数据集,没有特殊的参数,两个分区数据集的成员之间复制后再比较
注意第一部中用到的dd向第二部传递,特别注意!!
3. 实例二
a) 源程序
****** ***************************** Top of Data ******************************
000100 //UR644CPR JOB ,MARTIN,CLASS=A,MSGCLASS=A,MSGLEVEL=(1,1),NOTIFY=&SYSUID
000200 //COMPARE EXEC PGM=IEBCOMPR
000300 //SYSPRINT DD SYSOUT=*
000400 //SYSUT1 DD DSN=UR644.JCL.OUTPUT,DISP=SHR
000500 //SYSUT2 DD DSN=UR644.JCL.TEMP,DISP=SHR
000600 //SYSIN DD *
000700 COMPARE TYPORG=PO
000800 /*
****** **************************** Bottom of Data ****************************
b) 输出
********************************* TOP OF DATA **********************************
1 COMPARE UTILITY
- COMPARE TYPORG=PO 0010000
END OF JOB-TOTAL NUMBER OF RECORDS COMPARED = 00000012
******************************** BOTTOM OF DATA *******************************
c) 分析
比较两个分区数据集,注意指定COMPARE typeorg=po
IEBCOPY
概述
1. 概述
a) 功能
用于分区数据集的处理,可以用来对分区数据集复制,压缩,合并,格式的转换,对分区数据集的成员进行复制,备份,恢复,重命名,也可将分区数据集进行备份,保存成顺序数据集的格式。
i. 复制
1. 对分区数据集进行复制
a) 对分区数据集特定成员进行复制
SELECT MEMBER=(成员名,(成员名,新名,是否覆盖))
在成员有多个别名时,要求要将所有别名一同选上
b) 排除分区数据集特定成员进行复制
EXCLUDE MEMBER=(成员名[,成员名2])
在成员有多个别名时,要求将所有别名全部排除
c) 对分区数据集成员重命名
用SELECT进行成员重命名,实际执行为对分区数据集成员在数据集内进行复制。
2. 对分区数据集进行合并
默认的复制选项
复制时,当源数据集中内容与目标数据集内容重复,而且没有指定复制的默认操作时,将尽可能保留原数据集的内容,冲突的部分以目标数据集为主。
当需要用源数据集的成员代替目标数据集的内容时,
可以在数据集层面进行指定,具体方法是在INDD中指定R
可以在成员层面进行指定,具体方法是在MEMBER中指定R
此时复制时,将以源数据为主,目标数据集中的成员将被覆盖。
3. 对分区数据集重命名
ii. 更改分区数据集格式
1. 将PDS格式改为PDSE格式
2. 将分区数据集备份到磁带中
iii. 压缩数据集
将输入和输出的dd指定为同一个数据集时,可以对此数据集进行压缩操作。
Disp中用独占锁打开文件,防止其他用户的修改。
推荐执行时先备份数据集,以防不测
注意:
1. 对于pdse格式的数据集,压缩操作会直接跳过,
2. 在对数据集进行操作时,意外的程序中止可能会损坏数据集。在执行操作前,首先对数据集进行备份,直到操作完成再删除数据集。
3. 在进行压缩操作时,保证没有其他用户对此数据集进行操作,进行压缩时,如果对数据集数据进行更改会损坏数据集。
4. 在进行压缩时,不可对成员改名,添加,删除
5. 当indd中指定了多个数据集,程序会按照顺序依次执行,例如:
Indd=(a,b,c,b),outdd=b, 此时,会导致a复制到b,b压缩,接着c复制到b,b再压缩,增加难度,但是减少输入。
b) 自动生成控制语句。
当将SYSIN指定为DUMMY时,它根据PARM的值会自动生成控制语句
当什么都没有指定时,(PARM为空)默认控制为
COPY INDD=SYSUT1,OUTDD=SYSUT2。这时只要指定SYSUT1,SYSUT2,IEBCOPY就能正常使用
当指定了成员覆盖时(PARM=REPLACE,此处没有指定为COMPRESS,注意:COMPRESS优先)
COPY INDD=(SYSUT1,R),OUTDD=SYSUT2
当指定了要压缩数据集时,(PARM=COMPRESS)
COPY INDD=SYSUT2,OUTDD=SYSUT2
当参数指定了时,SYSIN自动关闭,即使有控制语句也不会执行
c) DD
SYSUT3,SYSUT4缓存空间,SYSUT1,SYSUT2输入输出dd,SYSIN控制语句输入
d) 控制语句
复制过程的开始:COPY(需要指定输入输出dd) 或者重新指定了INDD
过程参数:SELECT,EXCLUDE
此中概念类似作业部,COPY一步步执行
COPY |
INDD |
|
OUTDD |
||
LIST=[yes|no] |
指定是否输出复制了的成员名 |
实例1
1. 源代码
****** ***************************** Top of Data ******************************
000100 //UR644CPY JOB ,MARTIN,CLASS=A,MSGCLASS=A,MSGLEVEL=(1,1),NOTIFY=&SYSUID
000200 //******COMPRESS DATA SET**********************************************
000300 //COPY EXEC PGM=IEBCOPY
000400 //DDIN1 DD DSN=UR644.JCL.TEMP,DISP=OLD
000500 //DDIN2 DD DSN=UR644.JCL,DISP=OLD
000600 //DDOUT DD DSN=UR644.JCL.TEMP,DISP=OLD
000700 //SYSPRINT DD SYSOUT=*
000800 //SYSIN DD *
000900 COPY OUTDD=DDOUT,INDD=(DDIN1,DDIN2,DDIN1)
001000 /*
001100 //
****** **************************** Bottom of Data ****************************
2. 输出
********************************* TOP OF DATA **********************************
IEBCOPY MESSAGES AND CONTROL STATEMENTS
IEB1135I IEBCOPY FMID HDZ11H0 SERVICE LEVEL UA08613 DATED 20040202 DFSMS 01.0
IEB1035I UR644CPY COPY 20:09:39 TUE 06 MAR 2012 PARM=''
COPY OUTDD=DDOUT,INDD=(DDIN1,DDIN2,DDIN1) 00090002
IEB1018I COMPRESSING PDS OUTDD=DDOUT VOL=URVOL2 DSN=UR644.JCL.TEMP
IEB152I CPR#OUT1 COMPRESSED - WAS ALREADY IN PLACE AND NOT MOVED
IEB152I CP1#OUT COMPRESSED - WAS ALREADY IN PLACE AND NOT MOVED
IEB152I CP2#OUT COMPRESSED - WAS ALREADY IN PLACE AND NOT MOVED
IEB152I CP3#OUT COMPRESSED - WAS ALREADY IN PLACE AND NOT MOVED
IEB152I CP4#OUT COMPRESSED - WAS ALREADY IN PLACE AND NOT MOVED
IEB152I CP5#OUT COMPRESSED - WAS ALREADY IN PLACE AND NOT MOVED
IEB153I ALL MEMBERS COMPRESSED - ALL WERE ORIGINALLY COMPRESSED
IEB1013I COPYING FROM PDS INDD=DDIN2 VOL=URVOL1 DSN=UR644.JCL
IEB1014I TO PDS OUTDD=DDOUT VOL=URVOL2 DSN=UR644.JCL.TEMP
IEB167I FOLLOWING MEMBER(S) COPIED FROM INPUT DATA SET REFERENCED BY DDIN2
IEB154I IEB#CP1 HAS BEEN SUCCESSFULLY COPIED
IEB154I IEB#CP2 HAS BEEN SUCCESSFULLY COPIED
IEB154I IEB#CP3 HAS BEEN SUCCESSFULLY COPIED
IEB154I IEBCOMPR HAS BEEN SUCCESSFULLY COPIED
IEB154I IEBCOPY HAS BEEN SUCCESSFULLY COPIED
IEB154I IEBCPR#2 HAS BEEN SUCCESSFULLY COPIED
IEB154I JCLLAB1 HAS BEEN SUCCESSFULLY COPIED
IEB154I JCLTEST HAS BEEN SUCCESSFULLY COPIED
IEB1098I 8 OF 8 MEMBERS COPIED FROM INPUT DATA SET REFERENCED BY DDIN2
IEB1018I COMPRESSING PDS OUTDD=DDOUT VOL=URVOL2 DSN=UR644.JCL.TEMP
IEB152I CPR#OUT1 COMPRESSED - WAS ALREADY IN PLACE AND NOT MOVED
IEB152I CP1#OUT COMPRESSED - WAS ALREADY IN PLACE AND NOT MOVED
IEB152I CP2#OUT COMPRESSED - WAS ALREADY IN PLACE AND NOT MOVED
IEB152I CP3#OUT COMPRESSED - WAS ALREADY IN PLACE AND NOT MOVED
IEB152I CP4#OUT COMPRESSED - WAS ALREADY IN PLACE AND NOT MOVED
IEB152I CP5#OUT COMPRESSED - WAS ALREADY IN PLACE AND NOT MOVED
IEB152I IEB#CP1 COMPRESSED - WAS ALREADY IN PLACE AND NOT MOVED
IEB152I IEB#CP2 COMPRESSED - WAS ALREADY IN PLACE AND NOT MOVED
IEB152I IEB#CP3 COMPRESSED - WAS ALREADY IN PLACE AND NOT MOVED
IEB152I JCLTEST COMPRESSED - WAS ALREADY IN PLACE AND NOT MOVED
IEB152I JCLLAB1 COMPRESSED - WAS ALREADY IN PLACE AND NOT MOVED
IEB152I IEBCPR#2 COMPRESSED - WAS ALREADY IN PLACE AND NOT MOVED
IEB154I IEBCPR#2 HAS BEEN SUCCESSFULLY COPIED
IEB154I JCLLAB1 HAS BEEN SUCCESSFULLY COPIED
IEB154I JCLTEST HAS BEEN SUCCESSFULLY COPIED
IEB1098I 8 OF 8 MEMBERS COPIED FROM INPUT DATA SET REFERENCED BY DDIN2
IEB1018I COMPRESSING PDS OUTDD=DDOUT VOL=URVOL2 DSN=UR644.JCL.TEMP
IEB152I CPR#OUT1 COMPRESSED - WAS ALREADY IN PLACE AND NOT MOVED
IEB152I CP1#OUT COMPRESSED - WAS ALREADY IN PLACE AND NOT MOVED
IEB152I CP2#OUT COMPRESSED - WAS ALREADY IN PLACE AND NOT MOVED
IEB152I CP3#OUT COMPRESSED - WAS ALREADY IN PLACE AND NOT MOVED
IEB152I CP4#OUT COMPRESSED - WAS ALREADY IN PLACE AND NOT MOVED
IEB152I CP5#OUT COMPRESSED - WAS ALREADY IN PLACE AND NOT MOVED
IEB152I IEB#CP1 COMPRESSED - WAS ALREADY IN PLACE AND NOT MOVED
IEB152I IEB#CP2 COMPRESSED - WAS ALREADY IN PLACE AND NOT MOVED
IEB152I IEB#CP3 COMPRESSED - WAS ALREADY IN PLACE AND NOT MOVED
IEB152I JCLTEST COMPRESSED - WAS ALREADY IN PLACE AND NOT MOVED
IEB152I JCLLAB1 COMPRESSED - WAS ALREADY IN PLACE AND NOT MOVED
IEB152I IEBCPR#2 COMPRESSED - WAS ALREADY IN PLACE AND NOT MOVED
IEB152I IEBCOMPR COMPRESSED - WAS ALREADY IN PLACE AND NOT MOVED
IEB152I IEBCOPY COMPRESSED - WAS ALREADY IN PLACE AND NOT MOVED
IEB153I ALL MEMBERS COMPRESSED - ALL WERE ORIGINALLY COMPRESSED
IEB144I THERE ARE 0 UNUSED TRACKS IN OUTPUT DATA SET REFERENCED BY DDOUT
IEB147I END OF JOB - 0 WAS HIGHEST SEVERITY CODE
******************************** BOTTOM OF DATA *******************************
3. 分析
重点在COPY控制语句上,INDD上接受三个dd,程序按照顺序执行,
第一步:INDD为OUTDD,执行压缩操作
第二部:INDD为UR644.JCL,OUTDD为UR644.JCL.TEMP,将INDD中内容复制入OUTDD中
此步骤中,两个分区数据集中成员大部分相同,上面标识为橘黄色的是UR644.JCL中有UR644.JCL.TEMP中没有的成员,由于没有指定特殊的复制过程,因此只有这些成员被复制。其他重名的成员已经在目标数据集中存在,所以不予以复制。
第三步:INDD为OUTDD,再执行压缩操作。
此处INDD接受多个dd,大大简化,注意此使用技巧。
实例2
1. 源代码
****** ***************************** Top of Data ******************************
000100 //UR644CPY JOB ,MARTIN,CLASS=A,MSGCLASS=A,MSGLEVEL=(1,1),NOTIFY=&SYSUID
000200 //IEBCOPY EXEC PGM=IEBCOPY
000300 //SYSUT1 DD DSN=UR644.JCL,DISP=SHR
000400 //SYSUT2 DD DSN=UR644.JCL.OUTPUT,DISP=(OLD,CATLG)
000500 //SYSPRINT DD SYSOUT=*
000600 //SYSIN DD *
000700 COPY INDD=SYSUT1,OUTDD=SYSUT2
000800 SELECT MEMBER=(JCLCOPY,(JCLTEST,,R),(JCLLAB1,JCLLAB))
000900 /*
****** **************************** Bottom of Data ****************************
2. 输出
********************************* TOP OF DATA **********************************
IEBCOPY MESSAGES AND CONTROL STATEMENTS
IEB1135I IEBCOPY FMID HDZ11H0 SERVICE LEVEL UA08613 DATED 20040202 DFSMS 01.0
IEB1035I UR644CPY IEBCOPY 17:35:48 WED 07 MAR 2012 PARM=''
COPY INDD=SYSUT1,OUTDD=SYSUT2 00070001
SELECT MEMBER=(JCLCOPY,(JCLTEST,,R),(JCLLAB1,JCLLAB)) 00080001
IEB1013I COPYING FROM PDS INDD=SYSUT1 VOL=URVOL1 DSN=UR644.JCL
IEB1014I TO PDS OUTDD=SYSUT2 VOL=URVOL3 DSN=UR644.JCL.OUTPUT
IEB167I FOLLOWING MEMBER(S) COPIED FROM INPUT DATA SET REFERENCED BY SYSUT1
IEB154I JCLCOPY HAS BEEN SUCCESSFULLY COPIED
IEB155I JCLLAB HAS BEEN SUCCESSFULLY COPIED AND IS A NEW NAME
IEB154I JCLTEST HAS BEEN SUCCESSFULLY COPIED
IEB1098I 3 OF 3 MEMBERS COPIED FROM INPUT DATA SET REFERENCED BY SYSUT1
IEB144I THERE ARE 0 UNUSED TRACKS IN OUTPUT DATA SET REFERENCED BY SYSUT2
IEB149I THERE ARE 0 UNUSED DIRECTORY BLOCKS IN OUTPUT DIRECTORY
IEB147I END OF JOB - 0 WAS HIGHEST SEVERITY CODE
******************************** BOTTOM OF DATA *******************************
3. 分析
选择指定成员进行复制,
JCLCOPY 在目标数据集中没有名字冲突,成功复制
JCLLAB1由于在目标数据集中复制,并有新名字。
JCLTEST指定了覆盖,所以成功复制。
实例4
1. 源代码
****** ***************************** Top of Data ******************************
000100 //UR644CPY JOB ,MARTIN,CLASS=A,MSGCLASS=A,MSGLEVEL=(1,1),NOTIFY=&SYSUID
000200 //CONVERT EXEC PGM=IEBCOPY
000300 //SYSPRINT DD SYSOUT=*
000400 //SYSUT1 DD DSN=UR644.JCL.OUTPUT,DISP=SHR,DSNTYPE=PDS
000500 //SYSUT2 DD DSN=UR644.JCL.OUTPUT3,LIKE=UR644.JCL.OUTPUT,
000600 // DSNTYPE=LIBRARY,DISP=(NEW,CATLG)
000700 //SYSIN DD DUMMY
****** **************************** Bottom of Data ****************************
2. 输出
********************************* TOP OF DATA **********************************
IEBCOPY MESSAGES AND CONTROL STATEMENTS
IEB1135I IEBCOPY FMID HDZ11H0 SERVICE LEVEL UA08613 DATED 20040202 DFSMS 01.0
IEB1035I UR644CPY CONVERT 20:29:19 THU 08 MAR 2012 PARM=''
CONVERT COPY INDD=SYSUT1,OUTDD=SYSUT2 GENERATED STATEMENT
IEB1013I COPYING FROM PDS INDD=SYSUT1 VOL=URVOL3 DSN=UR644.JCL.OUTPUT
IEB1014I TO PDSE OUTDD=SYSUT2 VOL=URVOL1 DSN=UR644.JCL.OUTPUT3
IGW01551I MEMBER CPR#OUT1 HAS BEEN COPIED
IGW01551I MEMBER CP1#OUT HAS BEEN COPIED
IGW01551I MEMBER JCLCOPY HAS BEEN COPIED
IGW01551I MEMBER JCLIEBDG HAS BEEN COPIED
IGW01551I MEMBER JCLLAB HAS BEEN COPIED
IGW01551I MEMBER JCLTEST HAS BEEN COPIED
IGW01551I MEMBER SORTOUT HAS BEEN COPIED
IGW01550I 7 OF 7 MEMBERS WERE COPIED
IEB147I END OF JOB - 0 WAS HIGHEST SEVERITY CODE
******************************** BOTTOM OF DATA ********************************
3. 分析
重点在SYSUT2中,LIKE=UR644.JCL.OUTPUT,DSNTYPE=LIBRARY将新的数据集设置为相同格式的,只有存储方式不同。
SORT
概述
1. 功能
用来升序或降序对数据集进行排序,或者将两个顺序数据集进行合并
注意在合并时,注意保证输入数据有序,升降序与合并时指定的顺序相同!!
2. 参数
SORTOUT |
排序后输出文件 |
SORTIN |
排序用到的输入文件 |
SORTLIB |
指定程序用到的模块 |
SORTWKnn |
用到的文件,从01开始,在MERGE中会用到 |
SYSOUT |
注意此处不同,这里是OUT!! |
SYSIN |
控制语句 |
3. 控制语句
SORT |
指定操作为排序 |
FIELDS |
排序字段(起始位置,字段长,数据格式,升/降) |
MERGE |
指定操作为合并 |
FIELDS |
排序字段(起始位置,字段长,数据格式,升/降) |
上一字段可以多次指定,放在一个括号里 |
实例
1. 源代码
****** ***************************** Top of Data ******************************
000100 //DL044SRT JOB ,MARTIN,CLASS=A,MSGCLASS=A,MSGLEVEL=(1,1),NOTIFY=&SYSUID
000200 //SORT EXEC PGM=ICEMAN
000300 //SORTLIB DD DSN=SYS1.SORTLIB,DISP=SHR
000400 //SYSOUT DD SYSOUT=*
000500 //SORTIN DD DSN=DL044.JCL.OUTPUT,DISP=SHR
000600 //SORTOUT DD DSN=DL044.JCL.TEMP(OUTPUT),DISP=(OLD,CATLG),
000700 // SPACE=(TRK,(1,1)),RECFM=FB,LRECL=80
000800 //SYSIN DD *
000900 SORT FIELDS=(1,5,CH,D)
****** **************************** Bottom of Data ****************************
2. 输出
输出文件DL044.JCL.TEMP(OUTPUT)
****** ***************************** Top of Data ******************************
000001 00050 148
000002 00049 145
000003 00048 142
000004 00047 139
000005 00046 136
000006 00045 133
000007 00044 130
000008 00043 127
000009 00042 124
000010 00041 121
000011 00040 118
000012 00039 115
000013 00038 112
000014 00037 109
000015 00036 106
000016 00035 103
000017 00034 100
000018 00033 097
000019 00032 094
000020 00031 091
000021 00030 088
F1=Help F2=Split F3=Exit F5=Rfind F6=Rchange F7=Up
F8=Down F9=Swap F10=Left F11=Right F12=Cancel
输入的文件DL044.JCL.OUTPUT:
****** ***************************** Top of Data ******************************
000001 00001 001
000002 00002 004
000003 00003 007
000004 00004 010
000005 00005 013
000006 00006 016
000007 00007 019
000008 00008 022
000009 00009 025
000010 00010 028
000011 00011 031
000012 00012 034
000013 00013 037
000014 00014 040
000015 00015 043
000016 00016 046
000017 00017 049
000018 00018 052
000019 00019 055
000020 00020 058
000021 00021 061
F1=Help F2=Split F3=Exit F5=Rfind F6=Rchange F7=Up
F8=Down F9=Swap F10=Left F11=Right F12=Cancel
===============================================================================
3. 分析
注意最后一个参数的定义,注意在合并时,用于排序字段的内容相同则记录只出现一次
实例
1. 源代码
****** ***************************** Top of Data ******************************
000100 //DL044MRS JOB ,MARTIN,CLASS=A,MSGCLASS=A,MSGLEVEL=(1,1),NOTIFY=&SYSUID
000200 //MERGE EXEC PGM=SORT
000300 //SYSOUT DD SYSOUT=*
000400 //SORTIN01 DD DSN=DL044.JCL.OUTPUT,DISP=SHR
000500 //SORTIN02 DD DSN=DL044.JCL.OUTPUT2,DISP=SHR
000600 //SORTOUT DD DSN=DL044.JCL.TEMP(OUTPUT),DISP=(OLD,KEEP)
000700 //SYSIN DD *
000800 MERGE FIELDS=(1,5,CH,A)
000900 /*
****** **************************** Bottom of Data ****************************
2. 输出
ICE084I 0 BSAM ACCESS METHOD USED FOR SORTOUT
ICE084I 0 EXCP ACCESS METHOD USED FOR SORTIN01
ICE084I 0 EXCP ACCESS METHOD USED FOR SORTIN02
ICE751I 1 DC-Q82816 DD-Q84357 E8-BASE
ICE090I 0 OUTPUT LRECL = 80, BLKSIZE = 27920, TYPE = FB
ICE055I 0 INSERT 0, DELETE 0
ICE054I 0 RECORDS - IN: 100, OUT: 100
ICE052I 0 END OF DFSORT
******************************** BOTTOM OF DATA *******************************
3. 分析
归并时,数据集格式相同,升降序相同,
对于相同的数据(用于排序的部分),只会出现一次
IEHLIST
概述
查看卷的VTOC信息,查看分区数据集的directory block信息。
实例
1. 源代码
****** ***************************** Top of Data ******************************
000100 //DL044LST JOB ,MARTIN,CLASS=A,MSGCLASS=A,MSGLEVEL=(1,1),NOTIFY=&SYSUID
000200 //IEHLIST EXEC PGM=IEHLIST
000300 //SYSPRINT DD SYSOUT=*
000400 //DSDD DD UNIT=3390,VOLUME=SER=USER03,DISP=OLD
000500 //SYSIN DD *
000600 LISTVTOC VOL=3390=USER03
000700 /*
****** **************************** Bottom of Data ****************************
2. 输出
********************************* TOP OF DATA **********************************
SYSTEMS SUPPORT UTILITIES---IEHLIST
DATE: 2012.069 TIME: 10.50.05
CONTENTS OF VTOC ON VOL USER03 <THIS VOLUME IS NOT SMS MANAGED>
THERE IS A 2 LEVEL VTOC INDEX
DATA SETS ARE LISTED IN ALPHANUMERIC ORDER
----------------DATA SET NAME--------------- CREATED DATE.EXP FILE TYPE SMS
DATASETX 2012.066 00.000 PARTITIONED
DATASET4 2011.200 00.000 PARTITIONED
DATAX 2012.065 00.000 PARTITIONED
DL003.JCL.DATASET1 2012.065 00.000 PARTITIONED
DL003.JCL.DATASET5 2012.065 00.000 PARTITIONED
DL003.JCL.DATASET6 2012.065 00.000 PARTITIONED
DL003.JCL.OUTSET 2012.067 00.000 SEQUENTIAL
DL003.JCL.PDSSET1 2012.065 00.000 PARTITIONED
DL003.JCL.PDSSET2 2012.065 00.000 PARTITIONED
DL003.JCL.PSSET 2012.066 00.000 SEQUENTIAL
DL003.JCL.SOURCE 2012.065 00.000 PARTITIONED
DL003.JCL.SOURCE2 2012.068 00.000 PARTITIONED
DL003.JCL.TEST2 2012.058 00.000 PARTITIONED
DL003.JCLEDU.JCLM 2012.067 00.000 PARTITIONED
DL003.PROCLAB1.OUT1 2012.068 00.000 NOT DEFINED
F1=HELP F2=SPLIT F3=END F4=RETURN F5=IFIND F6=BOOK
F7=UP F8=DOWN F9=SWAP F10=LEFT F11=RIGHT F12=RETRIEVE
. . . . . . . . . . . . . . . . . . . . . . . . . . .
3. 分析
注意在查看前要用dd打开对应的卷
实例
1. 源代码
根据同学们的反馈发现我账号里上存的是以下脚本,运行没有错误,仅供大家参考。
****** ***************************** Top of Data ******************************
000100 //UR644LST JOB ,MARTIN,CLASS=A,MSGCLASS=A,MSGLEVEL=(1,1),NOTIFY=&SYSUID
000200 //LISTPDS EXEC PGM=IEHLIST
000500 //NUM1 DD UNIT=3390,VOL=SER=URVOL5,DISP=OLD
000510 //SYSPRINT DD SYSOUT=*
000600 //SYSIN DD *
000700 LISTPDS FORMAT,VOL=3390=URVOL5,DSNAME=UR644.JCL.OUTPUT1
000800 /*
****** **************************** Bottom of Data ****************************
2. 输出
********************************* TOP OF DATA **********************************
SYSTEMS SUPPORT UTILITIES---IEHLIST
DATE: 2012.074 TIME: 10.05.56
DIRECTORY INFO FOR SPECIFIED PDS ON VOL URVOL5
UR644.JCL.OUTPUT1
OTHER INFORMATION INDEX
SCATTER FORMAT SCTR=SCATTER/TRANSLATION TABLE TTR IN HEX,LEN OF SCTR LIST
ESDID OF FIRST TEXT RCD IN DEC,ESDID OF CSECT CONTAINI
OVERLAY FORMAT OVLY=NOTE LIST RCD TTR IN HEX,NUMBER OF ENTRIES IN NOTE LIS
ALIAS NAMES ALIAS MEMBER NAMES WILL BE FOLLOWED BY AN ASTERISK IN THE P
ATTRIBUTE INDEX
BIT ON OFF BIT ON OFF BIT ON OFF
0 RENT NOT RENT 4 OL NOT OL 8 NOT DC DC
1 REUS NOT REUS 5 SCTR BLOCK 9 ZERO ORG NOT ZE
2 OVLY NOT OVLY 6 EXEC NOT EXEC 10 EP ZERO NOT ZE
3 TEST NOT TEST 7 1 TXT MULTI RCD 11 NO RLD RLD
MEMBER ENTRY ATTR REL ADDR-HEX CONTIG LEN 1ST ORG 1ST
NAME PT-HEX HEX BEGIN 1ST TXT STOR-DEC TXT-DEC TXT-HEX
IEH112I MEMBERS OF SPECIFIED PDS NOT CREATED BY LINKAGE EDITOR - DUMP OPTION OUT
CPR#OUT1 00000800
CP1#OUT 00030003 0112 ****** ****** 0000421655 ***** ******
IEH112I MEMBERS OF SPECIFIED PDS NOT CREATED BY LINKAGE EDITOR - DUMP OPTION OUT
CP2#OUT 00000400
IEH112I MEMBERS OF SPECIFIED PDS NOT CREATED BY LINKAGE EDITOR - DUMP OPTION OUT
CP3#OUT 00000500
IEH112I MEMBERS OF SPECIFIED PDS NOT CREATED BY LINKAGE EDITOR - DUMP OPTION OUT
CP4#OUT 00000600
IEH112I MEMBERS OF SPECIFIED PDS NOT CREATED BY LINKAGE EDITOR - DUMP OPTION OUT
CP5#OUT 00000700
----OF THE 48 KBYTES ALLOCATED TO THIS PD
******************************** BOTTOM OF DATA ********************************
3. 分析
注意程序中用到的dd的指定,一个都不能少,特别是dd2!
IEBDG
概述
1. 功能
可以用来生成测试用的数据,这些数据可以是凭空捏造,也可以是将输入数据经过修改后得
可以按照特定格式生成测试数据,可以选择自定义格式,也可选择默认格式
格式列表
Alphanumeric |
AN |
字母和数字 |
Alphabetic |
AL |
字母 |
Zoned decimal |
ZD |
数字 |
2. 参数
任意名字1,任意名字2,用于指定输入和输出文件,这里可用的顺序的数据集进行操作
EXEC语句参数PARM定义每页输出的条目
3. 控制语句
DSD定义输入输入出数据集,每一步必须包含一个 |
INPUT |
输入数据 |
OUTPUT |
输出数据 |
|
FD定义要生成的一段 |
NAME |
段名 |
LENGTH |
指定数据段长度 |
|
FORMAT |
指定生成格式 |
|
STARTLOC |
指定开始列位置 |
|
INDEX |
指定记录的自增量 |
|
CYCLE |
指定每几条记录自增一次 |
|
REPEAT定义一组CREATE语句 |
QUANTITY |
定义重复的数量 |
CREATE |
定义组中的CREATE语句 |
|
CREATE定义记录的格式 |
NAME |
指定记录包含的域,可以多个 |
QUANTITY |
生成记录数目 |
|
END指定结束 |
实例
1. 源代码
****** ***************************** Top of Data ******************************
000100 //DL044BDG JOB ,MARTIN,CLASS=A,MSGCLASS=A,MSGLEVEL=(1,1),NOTIFY=&SYSUID
000200 //DATAGENE EXEC PGM=IEBDG
000300 //SORTOUT DD DSN=DL044.JCL.OUTPUT2,DISP=(NEW,CATLG),
000310 // SPACE=(TRK,(1,1)),LRECL=80,RECFM=FB,DSORG=PS
000400 //SYSPRINT DD SYSOUT=*
000500 //SYSIN DD *
000600 DSD OUTPUT=(SORTOUT)
000700 FD NAME=ID,LENGTH=5,STARTLOC=1,FORMAT=ZD,INDEX=1
000800 FD NAME=GRADE,LENGTH=3,STARTLOC=14,FORMAT=ZD,INDEX=5,CYCLE=1
000900 CREATE NAME=(ID,GRADE),QUANTITY=50
001000 END
001100 /*
001200 //
****** **************************** Bottom of Data ****************************
2. 输出
****** ***************************** Top of Data ******************************
==MSG> -CAUTION- Data contains invalid (non-display) characters. Use command
==MSG> ===> FIND P'.' to position cursor to these
==MSG> -Warning- The UNDO command is not available until you change
==MSG> your edit profile using the command RECOVERY ON.
000001 00001 001
000002 00002 006
000003 00003 011
000004 00004 016
000005 00005 021
000006 00006 026
000007 00007 031
000008 00008 036
000009 00009 041
000010 00010 046
000011 00011 051
000012 00012 056
000013 00013 061
000014 00014 066
000015 00015 071
000016 00016 076
000017 00017 081
000018 00018 086
000019 00019 091
000020 00020 096
000021 00021 101
F1=Help F2=Split F3=Exit F5=Rfind F6=Rchange F7=Up
F8=Down F9=Swap F10=Left F11=Right F12=Cancel
===============================================================================
3. 注意
在定义OUTDD时,一定要加括号,否则出错!!
实验总结
转载于:https://www.cnblogs.com/martin-dlut/archive/2012/03/14/2395420.html
JCL中utilities的使用相关推荐
- java中utilities类_servletutilities属于哪个java包
Servlet教程 Java Servlet 和 JSP教程 1 概述 1.1 Java Servlet及其特点 Servlet是Java技术对CGI编程的回答.Servlet程序在服务器端运行,动态 ...
- java中utilities类_Java PHUtilities类代码示例
import com.philips.lighting.hue.sdk.utilities.PHUtilities; //导入依赖的package包/类 private void setLampSta ...
- java中jcl_Java日志框架——JCL
JCL,全称为"Jakarta Commons Logging",也可称为"Apache Commons Logging". 一.JCL原理 1.基本原理 JC ...
- 【Log】(二)Java 中的日志框架 JCL、SLF
[Log](一)Java 中的日志框架 JUL.Log4j [Log](二)Java 中的日志框架 JCL.SLF [Log](三)Java 中的日志框架 logback.log4j2 前言 JUL ...
- KEIL4.12中添加ULINK2的支持
转载自:http://www.amobbs.com/thread-4767650-1-1.html 如果你用KEIL4.12,但却没有Ulink2下载器,只有早先用的Ulink下载器,那么你按照下面三 ...
- linux中dd命令详解,Linux dd命令详解
Linux 操作系统管理员的最主要的工作就是保证 Linux 系统在工作期间能够正常的运行.但是要做到这样,并不是那么容易,因为 Linux 系统的运行环境十分复杂,会有很多因素导致 Linux 系统 ...
- 03、JCL(日志门面)
文章目录 前言 一.认识JCL 1.1.JCL概述 1.2.第三方jar包 1.3.认识Log接口与LogFactory抽象类 二.JCL实际使用 2.1.应用JUL(jdk自带日志) 2.2.应用L ...
- 如何在UE4游戏中实现植物风场效果?
导语:如何让游戏里的植物产生类似风吹过的效果?腾讯游戏学院专家Freddy将在本文中,尝试使用UE4引擎的PivotPainter2.0插件制作此效果,一起来看看吧. 静态的游戏场景氛围是十分生硬的, ...
- GNU Make 使用手册(于凤昌中译版)
GNU Make 使用手册(中译版) 翻译:于凤昌 GNU make Version 3.79 April 2000 Richard M. Stallman and Roland McGrath 1 ...
最新文章
- 使用 Blazor 开发内部后台(二):了解 Blazor 组件
- 苹果手机透明桌面_原来苹果手机辨别真假这么简单!查看桌面1个图标,就能轻松分辨...
- 单例模式的八种写法比较
- 社群空间站v3.5.2 后台增加一处备注
- 为啥浏览器中的对象和w3c不一样??
- 【LeetCode】【HOT 100】2. 两数相加
- 谈谈你了解的python_你也可以侃侃而谈,一文带你了解Python的前世今生
- SQLServer收缩数据库日志
- 一个demo学会js
- Android意图Intent总结代码
- java 如何转化成机器指令_Java代码到底是如何编译成机器指令的
- Android Studio中arr包的引用
- Mockito简单实用教程 - 第一部分mock
- Lanczos插值滤波器
- JTAG篇(2)——FT2232H 控制 JTAG TAP
- opencv: 图像缩放(cv2.resize)
- koolshare docker插件使用
- Apache的HTTP 403 Forbidden错误的多种原因与解决方法!
- layui select onchange 实现
- Android 壁纸应用之动态壁纸