2013-10-14 59 views
0

我定義了一個限制參數爲5的生成數據組(GDG),我們將(1,2,3,4,5)作爲成員(假設5是當前位置) 。如何在不同的步驟中刪除2個GDG成員

我使用一個有2個步驟的作業,每個作業都會嘗試使用IEFBR14實用程序刪除一個成員。

//STEP10 EXEC PGM=IEFBR14 
//SYSOUT DD SYSOUT=* 
//SYSDEL DD DSN=DATA.TEST.GDG(-1), 
//    DISP=(MOD,DELETE,DELETE) 
//**************************************** 
//STEP20 EXEC PGM=IEFBR14 
//SYSOUT DD SYSOUT=* 
//SYSDEL DD DSN=DATA.TEST.GDG(-2), 
//    DISP=(MOD,DELETE,DELETE) 

我希望我可以得到結果爲(1,2,5),但事實上(1,3,5)被留下,成員2和成員4被刪除了?它似乎在第1步後,有一個提交操作,任何人都可以幫助我呢?

但另一方面,如果我嘗試刪除成員(0)和成員(-2),結果如我所料。

//STEP10 EXEC PGM=IEFBR14 
//SYSOUT DD SYSOUT=* 
//SYSDEL DD DSN=DATA.TEST.GDG(0), 
//    DISP=(MOD,DELETE,DELETE) 
//**************************************** 
//STEP20 EXEC PGM=IEFBR14 
//SYSOUT DD SYSOUT=* 
//SYSDEL DD DSN=DATA.TEST.GDG(-2), 
//    DISP=(MOD,DELETE,DELETE) 

我得到結果(1,2,4),成員3和成員5被刪除。

+1

一個問題,爲什麼你使用2個步驟???,DSN是在購物車???。你可以使用一個步驟和2個DD。你也不需要SYSOUT for IEFBR14 –

+2

作業1應該刪除第4代和第3代,再試一次運行 –

回答

2

JOB1刪除成員2和4.以下是它的工作原理。

enter code here 
//STEP1 EXEC PGM=IEFBR14 
//DD1 DD DSN=DATA.GDG.TEST(-1),DISP=(MOD,DELETE,DELETE) 
//* 
//STEP2 EXEC PGM=SORT   <==note:i added this step for TEST purpose only 
//SORTIN DD DSN=DATA.GDG.TEST(-1),DISP=SHR 
//SORTOUT DD DUMMY 
//SYSPRINT DD SYSOUT=* 
//SYSIN DD * 
OPTION COPY 
/* 
//STEP3 EXEC PGM=IEFBR14 
//DD2 DD DSN=DATA.GDG.TEST(-2),DISP=(MOD,DELETE,DELETE) 

如果我們看看JESYMSG,我們可以找到的消息如下:

IEF142I GDGTST STEP1 - STEP WAS EXECUTED - COND CODE 0000 
IGD105I DATA.GDG.TEST.G0004V00    DELETED, DDNAME=DD1 <==(-1) to 5 
**please note here in STEP2 the GDG member refered is 03 not 04 as expected** 
IEF142I GDGTST STEP2 - STEP WAS EXECUTED - COND CODE 0000 
IGD104I DATA.GDG.TEST.G0003V00    RETAINED, DDNAME=SORTIN <==(-1) to 4 

IEF142I GDGTST STEP3 - STEP WAS EXECUTED - COND CODE 0000 
IGD105I DATA.GDG.TEST.G0002V00    DELETED, DDNAME=DD2 <==(-2) to 4 

使用相對生成的編號爲新一代數據組作業中的第一次,系統建立相對代數與絕對代數之間的關係。 (參考:z/OS MVS JCL用戶指南 - 附錄B)

例如,如果您創建一個相對代數爲(+1)的生成數據集,則系統在整個工作中認識到任何隨後對(+1)的引用具有相同的絕對世代數。

  • (1) - >添加成員raltive到最近添加的構件(即,(0))
  • (2) - >(+ 1)至(1)
  • (+3) - >(+1)至(+2)

    同樣,在您發佈的JOB1中,引用設置爲(-1),即G0004V00在作業開始時。這(-1)的關係在整個工作中保持不變。 STEP2在我工作的結果證明了這一點。

因此在JOB1的兩個步驟(步驟10和步驟20)中實現結果(1,3,5)給出(-1)。那可行。 上述結果是JES2,不知道JES3

和JOB2的主要問題:

//STEP1 EXEC PGM=IEFBR14 
//DD1 DD DSN=DATA.GDG.TEST(0),DISP=(MOD,DELETE,DELETE) 
//SYSOUT DD SYSOUT=* 
//STEP2 EXEC PGM=SORT 
//SORTIN DD DSN=DATA.GDG.TEST(-1),DISP=SHR 
//SORTOUT DD DUMMY 
//SYSOUT DD SYSOUT=* 
//SYSPRINT DD SYSOUT=* 
//SYSIN DD * 
    OPTION COPY 
/* 
//STEP3 EXEC PGM=IEFBR14 
//DD2 DD DSN=DATA.GDG.TEST(-2),DISP=(MOD,DELETE) 
//SYSOUT DD SYSOUT=* 
//STEP4 EXEC PGM=IEFBR14 
//MODEL1 DD DSN=DATA.GDG.TEST(-1),DISP=(MOD,DELETE) 

的JESYMSG是如下:

IEF142I GDGTST STEP1 - STEP WAS EXECUTED - COND CODE 0000 
IGD105I DATA.GDG.TEST.G0005V00   DELETED, DDNAME=DD1 
IEF142I GDGTST STEP2 - STEP WAS EXECUTED - COND CODE 0000 
IGD104I DATA.GDG.TEST.G0004V00   RETAINED, DDNAME=SORTIN 
IEF142I GDGTST STEP3 - STEP WAS EXECUTED - COND CODE 0000 
IGD105I DATA.GDG.TEST.G0003V00   DELETED, DDNAME=DD2 
IEF142I GDGTST STEP4 - STEP WAS EXECUTED - COND CODE 0000 
IGD105I DATA.GDG.TEST.G0004V00   DELETED, DDNAME=MODEL1 

正如我剛纔解釋,當作業第一次遇到RELATIVE引用時,建立絕對GDG和相對GDG之間的關係。所以在這份工作中,它第一次遇到(0)。所以當發起者在每個步驟發出ENQ時,參考JOB2中的(0)來解析世代號。 如果我們在這裏觀察它在步驟1,步驟3,步驟4中刪除(0,3,4)→(for)(0),( - 2),( - 1)。這意味着,它不會在執行eachstep之後提交。相對於步驟1中建立的(0)解決了步驟4中對(-1)的引用。

讓下面考慮一個例子:如果我添加一個morestep STEP5像下到上的工作

//STEP1 EXEC PGM=IEFBR14 
//DD1 DD DSN=DATA.GDG.TEST(-0),DISP=(MOD,DELETE,DELETE) 
//SYSOUT DD SYSOUT=* 
//STEP2 EXEC PGM=SORT 
//SORTIN DD DSN=DATA.GDG.TEST(-1),DISP=SHR 
//SORTOUT DD DUMMY 
//SYSOUT DD SYSOUT=* 
//SYSPRINT DD SYSOUT=* 
//SYSIN DD * 
    OPTION COPY 
/* 
//STEP3 EXEC PGM=IEFBR14 
//DD2 DD DSN=DATA.GDG.TEST(-2),DISP=(MOD,DELETE,DELETE) 
//SYSOUT DD SYSOUT=* 
//STEP4 EXEC PGM=IEFBR14 
//MODEL1 DD DSN=DATA.GDG.TEST(-2),DISP=(MOD,DELETE) 
//STEP5 EXEC PGM=IEFBR14 
//DD2 DD DSN=DATA.GDG.TEST(-1),DISP=(MOD,DELETE,DELETE) 
//STEP6 EXEC PGM=IEFBR14 
//DD2 DD DSN=DATA.GDG.TEST(-2),DISP=(MOD,DELETE,DELETE) 

它刪除(0,3,2,4) - >因爲STEP4的起點它遇到了一個模糊不清的問題,所以它解決了對於論文的引用。對於STEP6而言,它又含糊不清,所以它又試圖根據目錄來解決引用問題,現在由於沒有足夠的生成成員(因爲我們只創建了5個成員並已刪除4個成員),它會拋出如下所示的消息:

IEF286I GDGTST STEP6 DD2 - DISP FIELD INCOMPATIBLE WITH DSNAME 
IEF272I GDGTST STEP6 - STEP WAS NOT EXECUTED. 
+0

與GDG合作的樂趣。你從第一個問題中得到第二份工作的結果是什麼?人們可能希望看到成員5和2被刪除,而不是5和3? – NealB

+0

@NEALB:在答案中增加了一些要點,請您檢查一下。 – Parushuram

+0

我有一個鏈接供您參考,但更新的z/OS用戶指南http://publibz.boulder.ibm.com/cgi-bin/bookmgr_OS390/handheld/Connected/BOOKS /iea2b550/APPENDIX1.1.2.6 –

相關問題