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時,一定要加括號,否則出錯!!

實驗總結


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM