实验目的

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的使用相关推荐

  1. java中utilities类_servletutilities属于哪个java包

    Servlet教程 Java Servlet 和 JSP教程 1 概述 1.1 Java Servlet及其特点 Servlet是Java技术对CGI编程的回答.Servlet程序在服务器端运行,动态 ...

  2. java中utilities类_Java PHUtilities类代码示例

    import com.philips.lighting.hue.sdk.utilities.PHUtilities; //导入依赖的package包/类 private void setLampSta ...

  3. java中jcl_Java日志框架——JCL

    JCL,全称为"Jakarta Commons Logging",也可称为"Apache Commons Logging". 一.JCL原理 1.基本原理 JC ...

  4. 【Log】(二)Java 中的日志框架 JCL、SLF

    [Log](一)Java 中的日志框架 JUL.Log4j [Log](二)Java 中的日志框架 JCL.SLF [Log](三)Java 中的日志框架 logback.log4j2 前言 JUL ...

  5. KEIL4.12中添加ULINK2的支持

    转载自:http://www.amobbs.com/thread-4767650-1-1.html 如果你用KEIL4.12,但却没有Ulink2下载器,只有早先用的Ulink下载器,那么你按照下面三 ...

  6. linux中dd命令详解,Linux dd命令详解

    Linux 操作系统管理员的最主要的工作就是保证 Linux 系统在工作期间能够正常的运行.但是要做到这样,并不是那么容易,因为 Linux 系统的运行环境十分复杂,会有很多因素导致 Linux 系统 ...

  7. 03、JCL(日志门面)

    文章目录 前言 一.认识JCL 1.1.JCL概述 1.2.第三方jar包 1.3.认识Log接口与LogFactory抽象类 二.JCL实际使用 2.1.应用JUL(jdk自带日志) 2.2.应用L ...

  8. 如何在UE4游戏中实现植物风场效果?

    导语:如何让游戏里的植物产生类似风吹过的效果?腾讯游戏学院专家Freddy将在本文中,尝试使用UE4引擎的PivotPainter2.0插件制作此效果,一起来看看吧. 静态的游戏场景氛围是十分生硬的, ...

  9. GNU Make 使用手册(于凤昌中译版)

    GNU Make 使用手册(中译版) 翻译:于凤昌 GNU make Version 3.79 April 2000 Richard M. Stallman and Roland McGrath 1 ...

最新文章

  1. 使用 Blazor 开发内部后台(二):了解 Blazor 组件
  2. 苹果手机透明桌面_原来苹果手机辨别真假这么简单!查看桌面1个图标,就能轻松分辨...
  3. 单例模式的八种写法比较
  4. 社群空间站v3.5.2 后台增加一处备注
  5. 为啥浏览器中的对象和w3c不一样??
  6. 【LeetCode】【HOT 100】2. 两数相加
  7. 谈谈你了解的python_你也可以侃侃而谈,一文带你了解Python的前世今生
  8. SQLServer收缩数据库日志
  9. 一个demo学会js
  10. Android意图Intent总结代码
  11. java 如何转化成机器指令_Java代码到底是如何编译成机器指令的
  12. Android Studio中arr包的引用
  13. Mockito简单实用教程 - 第一部分mock
  14. Lanczos插值滤波器
  15. JTAG篇(2)——FT2232H 控制 JTAG TAP
  16. opencv: 图像缩放(cv2.resize)
  17. koolshare docker插件使用
  18. Apache的HTTP 403 Forbidden错误的多种原因与解决方法!
  19. layui select onchange 实现
  20. Android 壁纸应用之动态壁纸

热门文章

  1. echarts3D动态柱状图
  2. python列表自定义顺序排序
  3. FFT(快速傅里叶变换)学习笔记
  4. 关闭Windows Defender实时保护解决下载激活软件报检测到病毒无法下载的问题
  5. 【原理+源码详细解读】从Transformer到ViT
  6. 顾大松:对北京市出租车、网约车、顺风车文件征求意见稿的六项建议
  7. java源码模拟面试解析指南,快手支付中台java面试题
  8. PhotoZoom图像缩放方法效果对比
  9. mpi4py 并行读/写 numpy npy 文件的方法
  10. Travel Pass