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)
任何人都可以向我解释,我失去了什么?
为“阅读和排序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后面的行只是被忽略。
我同意这一点:-) –
谢谢比尔,顺便说一句:51区的MFsite发生了什么?有点耻辱,我认为它没有“制造”它,不是吗?我们有可能给它一些新的尝试吗? –
哇,从我见过JCL已经有30年了。你能描述它现在的功能吗? (换句话说,它以什么方式不产生你期望的输出?) –
你正在分档到SYSOUT(后台打印),然后复制(使用ICEGENER)一个完全不同的数据集到你的预期输出。只需将SORTOUT DD更改为您需要的数据集'DISP = SHR,DSN =&SYSUID..P2.OUTPUT($ 005)',然后删除整个ICEGENER步骤。 –