如何找到JCL MSGCLASS=



我正在IBM publib.boulder网站上编写一个基本的JCL脚本。下面是JCL,它只是按升序对字符列表进行排序。作业执行得很好,但SYSIN的内容没有打印到作业状态,如publib演示中所示

这是我的代码:

//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有关。我试过在谷歌上搜索z/OS MSGCLASS,但毫不奇怪,它的搜索结果很少。

关键问题是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)
/*

在SDSF中尝试ST jobname,它将显示所有输出。ST是作业的状态,显示系统上已提交或已完成的所有作业的所有输出。

此外,如果您正在查看保留队列H jobname,则查看它显示的作业的输出类,并尝试将msgclass更改为保留队列上显示的类之一。例如,在我的系统上,我可以在保留队列上看到类X和H,但当我使用ST命令时,只能看到类A

事实上,您在链接到的手册页面中发现了一个文档错误。然而,您也引入了自己的错误。

对于您的大型机安装的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做其他事情时,还有其他DD(如MERGE、JOINKEYS、OUTFIL),它们可以或确实使用不同名称的DD。也可以覆盖标准名称,但不能将它们覆盖到SYSIN。

//SYSINDD*有点像STDIN,但不要被这种比较冲昏头脑。按照惯例,许多大型机实用程序使用SYSIN进行输入。如果JCL流包含前面没有DDName的"卡",则会自动生成SYSIN的DDName。COBOL对于一种类型的输入有一个ACCEPT谓词,其默认DD是SYSIN。然而,仅仅在JCL中为一个步骤包含一个SYSIN并不能保证它会被使用。如果EXEC上的程序不使用SYSIN,那么简单地包括SYSIN不会导致从那里读取数据。

最新更新