如何找到JCL MSGCLASS =?

时间:2014-01-02 17:54:17

标签: mainframe zos jcl

我正在从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,毫不奇怪,它提出的很少。

3 个答案:

答案 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就不会导致从那里读取数据。