微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

添加月但参数来自数据JCL

如何解决添加月但参数来自数据JCL

我有这样的数据

----+----1----+----2----+----3----+-- 
000000002320110328087YY01200000020124

我想add the months 来自 column 11-18,with the value from 24-26

我在想 outrec 字段是这样的

11,8,Y4T,ADDMONS,24,3,TOGREG=Y4T(-)

但是当我尝试它时,它给出了 rc=0016,因为操作数错误

我正在考虑将 24,3 的值存储到一个变量中,然后将其放入变量中,但我不知道 JCL 是否可以提供该值.. 任何人都可以提供帮助?

注意:我使用 dfsort ,而不是 icetool

并且我不想对其进行硬编码,因为我已经尝试了 11,+12,TOGREG=Y4T(-),它可以工作,但如果可以,我想用值替换“+12”来自第 24-26 列

解决方法

您案例中 ADDMONS 的语法图如下所示:

p,m,Y4T,ADDMONS,p,f,TOGREG=Y4T(-)

您缺少 f 子参数。由于要添加的月份数是一系列数字,因此格式为 UFF。我运行了这样的工作:

//SORT#010 EXEC     PGM=ICEMAN                                     
//SYSOUT   DD       SYSOUT=*                                       
//SYSPRINT DD       SYSOUT=*                                       
//SORTIN   DD       *                                              
000000002320110328087YY01200000020124                              
/*                                                                 
//SORTOUT  DD       SYSOUT=*                                       
//SYSIN    DD       *                                              
           SORT     FIELDS=COPY                                    
           OUTREC FIELDS=(11,8,24,3,UFF,TOGREG=Y4T(-)) 
/*                                                                 

SORTOUT 中的结果是:

2012-03-28 

这是你想要的吗?

,

我不知道用普通 DFSORT 来做到这一点的方法。

例如 PARSE 将不起作用,因为它无法解析 %2

INREC PARSE=(%1=(ABSPOS=11,FIXLEN=8),%2=(ABSPOS=24,FIXLEN=3)),BUILD=(%1,+%2,TOGREG=Y4T(-))

如果您想使用 DFSORT,您可能需要查看 sort exits

,

你得到一个错误的返回码,因为 DFSORT 不知道如何解释你用 24,3 给它的三个字节。

你应该使用:11,ZD,TOGREG=Y4T(-)

我插入的 ZD 表示:分区十进制。它对应于 Cobol 中的 PIC 9 USAGE DISPLAY

您可以用 PD 解释 COMP-3,用 BI 解释 COMP-5 或 BINARY。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。