JCL这有什么问题?

问题描述:

我想破解这个JCL,并想知道什么是错的。JCL这有什么问题?

这是我的代码:

000001 //SORTJCL JOB           
000002 //SORTSTEP EXEC PGM=SORT        
000003 //SYSOUT DD SYSOUT=*         
000004 //SORTOUT DD SYSOUT=*         
000005 //SORTWK01 DD SPACE=(CYL,(1,1))      
000006 //SORTIN DD DISP=SHR,DSN=Y2015.PUBLIC.DATA(AREACODE) 
000007 //SYSIN  DD *          
000008 SORT FIELDS=(6,10,CH,A)        
000009 // IF RC = 0 THEN          
000010 //COPYSTEP EXEC PGM=ICEGENER       
000011 //SYSUT1 DD DISP=SHR,DSN=Y2015.PUBLIC.DATA($005)  
000012 //SYSUT2 DD DISP=SHR,DSN=&SYSUID..P2.OUTPUT($005) 
000013 //SYSOUT DD SYSOUT=*         
000014 //SYSPRINT DD SYSOUT=*         
000015 //SYSIN  DD DUMMY         
000016 // ELSE            
000017 // ENDIF    

这段代码的目的 - 阅读和排序Y2015.PUBLIC.DATA(AREACODE)复制和写入输出到MYID.P2.OUTPUT($005)

任何人都可以向我解释,我失去了什么?

+0

哇,从我见过JCL已经有30年了。你能描述它现在的功能吗? (换句话说,它以什么方式不产生你期望的输出?) –

+3

你正在分档到SYSOUT(后台打印),然后复制(使用ICEGENER)一个完全不同的数据集到你的预期输出。只需将SORTOUT DD更改为您需要的数据集'DISP = SHR,DSN =&SYSUID..P2.OUTPUT($ 005)',然后删除整个ICEGENER步骤。 –

为“阅读和排序Y2015.PUBLIC.DATA(AREACODE)”,你已经使用了正确的//SORTIN在你第一次jobstep,符合000006.因此而引起的读取和排序被写入//SORTOUT,这在你的JCL似乎被写入SYSOUT=*(卷轴),符合000003.

但是,这不是你应该做的(按你的“复制和写入输出到MYID.P2.OUTPUT($ 005 )“)。所以为此必须修改行000003像这样:

000003 //SYSOUT DD DISP=SHR,DSN=&SYSUID..P2.OUTPUT($005) 

您应用此更改后,您还需要删除相关的第二jobstep一切(所以从线000009,一切都开始之后该行)。

如果因任何原因,你还是希望所有的行继续列入本JCL,只需插入行000009前面一个新行,看起来像这样:

000009 // 

这将导致所有剩余JCL后面的行只是被忽略。

+0

我同意这一点:-) –

+0

谢谢比尔,顺便说一句:51区的MFsite发生了什么?有点耻辱,我认为它没有“制造”它,不是吗?我们有可能给它一些新的尝试吗? –