0

我正在尝试将 IBM 文件传递​​给十六进制值,所以我编写了以下代码:

//R45ORF80V  JOB (EFAS,2SGJ000),'LLAMI',NOTIFY=R45ORF80,
//     MSGLEVEL=(1,1),MSGCLASS=X,CLASS=A,             
//     REGION=0M,TIME=5                               
//*---------------------------------------------------
//SORTEST   EXEC PGM=ICEMAN                            
//SORTIN   DD DSN=LF58.DFE.V1408001,DISP=SHR         
//SORTOUT  DD DSN=LF58.DFE.V1408001.OUT,             
//            DISP=(NEW,CATLG,DELETE),                
//            LRECL=1026,DATACLAS=CDMULTI             
//SYSOUT   DD SYSOUT=X                                
//SYSPRINT DD SYSOUT=X                                
//SYSUDUMP DD SYSOUT=X                                
//SYSIN    DD *                                       
  SORT FIELDS=COPY                                    
  OUTREC FIELDS=(1,513,HEX)                                 
  END                                                 
/*                                                    

但我收到以下错误:

ICE043A INVALID DATA SET ATTRIBUTES: SORTOUT  RECFM   - REASON CODE IS 08

我在驳斥什么?无论如何,SYSIN 是正确的?

4

1 回答 1

1

您切断了消息中最重要的部分,即消息代码(我已在问题中进行了编辑)。

当您从 DFSORT 中收到您尚未识别的消息时,您有几个选择:找到DFSORT Messages, Codes and Diagnosis Guide您发布的手册;使用 IBM LookAT 网络服务 ( http://www-03.ibm.com/systems/z/os/zos/bkserv/lookat/ );互联网搜索;问你的同事。

其中之一应该让您:

ICE043A 无效的数据集属性:ddname 属性 - 原因代码为 rsn 说明:严重。检测到与记录格式、记录长度或块大小相关的错误,或者检测到这些属性之间的冲突...

原因代码 8 是:

输入和输出数据集具有混合的固定长度和可变长度记录格式,或混合的有效和无效记录格式。示例:SORTIN 数据集的 RECFM=FB,SORTOUT 数据集的 RECFM=VB。SORTIN01 数据集的 RECFM=VB,SORTOUT 数据集的 RECFM=F 或 RECFM=U

基本上它就像 piet.t 在评论中所怀疑的那样,要么你的输入是可变的,而输出是固定的(看起来你在 DATACLAS 中有一些东西,那是正确的吗?),或者相反。

使用 SORT,您无需在输出数据集上提供任何 DCB 信息。那它,没有RECFM、LRECL或BLKSIZE。查看您的 SYSOUT。这将告诉您输入数据集的 RECFM。如果这是错误的,则说明您使用了错误的文件,或者它的创建不正确。如果正确,则从输出数据集中剥离所有 DCB 信息。

如果在与存储人员讨论 DATACLAS 后仍然存在问题,请粘贴当前运行的 JOB 中的 sysout。

对于您遇到的其他问题,如果您需要帮助,请提出一个新问题。

于 2014-11-18T10:26:48.150 回答