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