我正在从IBM publib.boulder站点处理一个基本的JCL脚本。下面是简单地按升序排序字符列表的JCL。作业执行得很好,但SYSIN的内容不会打印到作业状态,如publib demonstration
中所示这是我的代码:
//SORT JOB OTIMPF01,CLASS=A,MSGCLASS=H
/*
//STEP1 EXEC PGM=SORT
//SYSIN DD * SORT FIELDS=(1,75,CH,A)
/*
//SYSOUT DD SYSOUT=*
//SYSIN DD *
NEPTUNE
PLUTO
EARTH
VENUS
MERCURY
MARS
URANUS
SATURN
JUPITER
/*
//SORTOUT DD SYSOUT=*
/*
我知道它与MSGCLASS =语句有关。来自publib的示例代码使用MSGCLASS = H,我被告知这取决于谁在大型机上设置选项。我的问题是,如何在不问任何人的情况下弄清楚我的大型机的MSGCLASS设置是什么?同样,我只想将按升序排序的字符结果显示在作业状态中。
看起来应该是这样......
ICE134I 0 NUMBER OF BYTES SORTED: 720
ICE180I 0 HIPERSPACE STORAGE USED = 0K BYTES
ICE188I 0 DATA SPACE STORAGE USED = 0K BYTES
ICE052I 0 END OF DFSORT
EARTH
JUPITER
MARS
MERCURY
NEPTUNE
PLUTO
SATURN
URANUS
VENUS
...只有我的工作状态读数才会在作业状态的输出中显示地球通过金星。
我的工作状态如下......
IEF373I STEP/STEP1 /START 2014002.1033
IEF374I STEP/STEP1 /STOP 2014002.1033 CPU 0MIN 00.00SEC SRB 0MIN 00.00SEC VIRT 212K SYS 248K EXT 8K SYS 11592K
IEF375I JOB/SORT /START 2014002.1033
IEF376I JOB/SORT /STOP 2014002.1033 CPU 0MIN 00.00SEC SRB 0MIN 00.00SEC
ICE000I 1 - CONTROL STATEMENTS FOR 5694-A01, Z/OS DFSORT V1R5 - 10:33 ON THU JAN 02, 2014 -
ICE010A 0 NO SORT OR MERGE CONTROL STATEMENT
ICE751I 0 C5-K05352 C6-Q95214 E7-K90000
ICE052I 3 END OF DFSORT
我想这与正确设置MSGCLASS有关。我已经尝试了谷歌搜索/操作系统MSGCLASS,毫不奇怪,它提出的很少。
答案 0 :(得分:4)
关键问题是ICE010A 0 NO SORT OR MERGE CONTROL STATEMENT
。假设您在此处正确转录了JCL,则输入:
//SYSIN DD * SORT FIELDS=(1,75,CH,A)
/*
在这种情况下,您向SORT
提交了一个空输入流,因为SORT FIELDS=(1,75,CH,A)
被视为DD
语句的注释。
您应该输入:
//SYSIN DD *
SORT FIELDS=(1,75,CH,A)
/*
答案 1 :(得分:1)
在SDSF中尝试 ST作业名,它会显示所有输出。 ST是作业的状态,显示提交或完成的系统上所有作业的所有输出。
此外,如果您正在查看保留的队列 H作业名,那么请查看它显示的作业输出类,并尝试将msgclass更改为保留队列中显示的其中一个类。例如,在我的系统上,我可以在保持的队列中看到类X和H,但是当我使用 ST 命令时只看到A类
答案 2 :(得分:1)
确实,您在链接到的手册页中发现了文档错误。但是,您还引入了自己的错误。
对于您的Mainframe安装的SORT包(可能是IBM的DFSORT或竞争的SyncSort,但也可能是其他竞争对手CA-SORT):
//SYSIN DD whatever
你把控制卡放在哪里。
在上面,无论是*,DATA还是实际数据集的参数。
您使用的SORT程序输入的DDNAME是SORTIN:
//SORTIN DD whatever (same as above)
你也意外地制作了SYSIN。它应该是:
//SYSIN DD *
NEPTUNE
PLUTO
EARTH
VENUS
MERCURY
MARS
URANUS
SATURN
JUPITER
然后,您应该在SORTOUT假脱机文件中看到示例的输出。
当您使用SORT(例如MERGE,JOINKEYS,OUTFIL)执行其他操作时,还有其他可以使用不同命名的DD的DD。也可以覆盖标准名称,但是您无法将它们覆盖到SYSIN。
// SYSIN DD *有点像STDIN,但不要随便进行比较。按照惯例,许多大型机实用程序使用SYSIN进行输入。如果JCL流包含"卡"如果没有DDName,则会自动生成SYSIN的DDName。 COBOL对一种输入有一个ACCEPT动词,默认的DD是SYSIN。但是,只需在JCL中包含一个SYSIN步骤就不能保证它会被使用。如果EXEC上的程序不使用SYSIN,那么简单地包含SYSIN就不会导致从那里读取数据。