首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何找到JCL MSGCLASS=?

如何找到JCL MSGCLASS=?
EN

Stack Overflow用户
提问于 2014-01-02 17:54:16
回答 3查看 3.2K关注 0票数 1

我正在从IBM站点开发一个基本的publib.boulder脚本。下面是简单地按升序排列字符列表的JCL。作业执行得很好,但是SYSIN的内容没有打印到作业状态,如耻骨演示所示

这是我的代码:

代码语言:javascript
复制
//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=语句有关。发布库中的示例代码使用MSGCLASS=H,我被告知这是不同的,这取决于在大型机上设置选项的人。我的问题是,我如何才能不问任何人就能弄清楚我的主机的MSGCLASS设置的是什么?同样,我只希望在作业状态中显示按升序排序的字符的结果。

应该是这样的..。

代码语言:javascript
复制
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 

...Only我的工作状态读出不显示字符地球通过金星在输出的作业状态。

我的工作状况是这样的..。

代码语言:javascript
复制
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,而毫不奇怪,它很少出现。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2014-01-02 22:39:16

关键问题是ICE010A 0 NO SORT OR MERGE CONTROL STATEMENT。假设您在这里正确地转录了JCL,那么您输入:

代码语言:javascript
复制
//SYSIN DD *  SORT   FIELDS=(1,75,CH,A)
/*

在这种情况下,您向SORT提供了一个空输入流,因为SORT FIELDS=(1,75,CH,A)被视为对DD语句的注释。

你应该输入:

代码语言:javascript
复制
//SYSIN DD *
  SORT   FIELDS=(1,75,CH,A)
/*
票数 4
EN

Stack Overflow用户

发布于 2014-01-02 21:28:44

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

另外,如果您正在查看已保存的队列H作业名,然后查看它为您显示的作业输出类,并尝试将msgclass更改为所保存队列上显示的类之一。例如,在我的系统中,我可以在被保持的队列中看到类X和H,但只有当我使用ST命令时才能看到A类

票数 1
EN

Stack Overflow用户

发布于 2014-01-03 12:20:27

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

对于已安装的大型机排序包(可能是IBM的DFSORT或竞争的SyncSort,但也可能是进一步的竞争对手CA排序):

代码语言:javascript
复制
//SYSIN DD whatever

就是你放控制卡的地方。

在上面,无论什么都可以是*,数据或实际数据集的参数。

用于对您使用的排序程序输入的DDNAME是SORTIN:

代码语言:javascript
复制
//SORTIN DD whatever (same as above)

你也不小心做了那个SYSIN。它应该是:

代码语言:javascript
复制
//SYSIN   DD   *                       
NEPTUNE                                
PLUTO                                  
EARTH                                  
VENUS                                  
MERCURY                                
MARS                                   
URANUS                                 
SATURN                                 
JUPITER       

然后,您应该在SORTOUT假脱机文件中看到示例中的输出。

还有其他的DDs,当您使用排序(如MERGE、JOINKEYS、OUTFIL)做其他事情时,它们可以或确实使用不同名称的DDs。也可以重写标准名称,但您无法将它们重写为SYSIN。

//SYSIN DD *有点像STDIN,但不要对比较感到迷惑。按照惯例,许多大型机实用程序使用SYSIN作为输入。如果JCL流包含没有DDName前面的“卡片”,那么将自动生成SYSIN的DDName。COBOL对于输入类型有一个接受动词,默认的DD是SYSIN。但是,简单地在JCL中包含一个SYSIN作为一个步骤并不能保证它将被使用。如果EXEC上的程序不使用SYSIN,那么简单地包含SYSIN不会导致从那里读取数据。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20888782

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档