阅 读 文 章

RPG带参数CALL的问题

[来源:网上转载 (http://www.chinaunix.net) | 作者:网友(V01619) | 时间:2007-05-27 | 浏览:人次 ]


有一个RPG程序A,需要传入参数运行的.其中有一个参数是数值型A1.另一个是字符型B1.
为什么在使用如下命令CALL A PARM(A1 'B') 时会发生 decimal-data error in field错误?



 USING_AS400 回复于:2006-12-28 20:57:56

三种方法:
1.写个CL程序,大致如下
PGM
DCL   VAR(V1)   TYPE(*DEC) LENGTH(5 0) 
CHGVAR VAR(V1) VALUE(12345)
CALL PGM(YOURRPG) PARM(V1 'B')
ENDPGM

2.把RPG参数定义成字符型的,然后在RPG里头在转换成数值型,那么在命令行CALL就没问题了
*ENTRY       PLIST
                   PARM              V1            5
                   PARM              V2            1
                   MOVE     V1     VV            5 0

3.在命令行直接输入,也可以,不过稍微有些复杂
输入格式与你定义的数值型变量长度有关,假如是偶数长度,比如说吧:
(1)有一个数值型6位长,你想输入的参数是20061229和B,那么传参应该是CALL PGM(YOURRPG) PARM(X'020061229F' 'B') ,F表示正的,前面需要补0;
(2)有一个数值型5位长,你想输入的参数是2006122和B,那么传参应该是CALL PGM(YOURRPG) PARM(X'20061229F' 'B') ,F表示正的,前面不需要补0
【注:一般格式是,偶数位长X'0nnnn……nnF',前面补0,;奇数位长X'nnn……nnF',前面不需要补0。后面一位表示符号,F表示整数,D表示负数】

[ 本帖最后由 USING_AS400 于 2006-12-28 20:59 编辑 ]


 V01619 回复于:2006-12-29 08:57:28

不错,很管用.


 USING_AS400 回复于:2006-12-29 21:45:39

再补充一下,传入的数值型还分P型和S型,如果是P型的,那么传入规则就如上第3点所述,
如果是S型,那么直接按字符型传入即可
如:
D V1                 S               8S 0
*ENTRY       PLIST
                   PARM              V1            
                   PARM              V2            1
论坛热门帖子: [lch203] 写得蛮好的linux学习笔记(10-21)
[黑马制造] 学习java的30个目标(10-19)
[笑傲股林] 做测试半年了,有点迷茫,应该再学些什么提高自己的测试水平和测试能力呢?(10-19)
[udp8589] 大家用google的来吱一声? 用百度的~~也来报道下?(10-18)
[沂偌掳兆] 本人总结的一些认为C++比较经典的书籍,希望对大家有用(10-18)
TAG标签: 问题 参数 需要 输入 如果 表示 传递 方式 长度 parm2

最新评论 共有0位网友发表了评论

发表评论

评论内容:不能超过250字,需审核,请自觉遵守互联网相关政策法规。
用户名:(注册)
密码:
验证码:
匿名发表

网站地图友情连接交流论坛网站投稿广告服务联系我们留言本站长统计
Some rights reserved: www.chmhome.com, 鄂ICP备07010232号 E-mail:chinakafei@live.com,QQ:552766
中国咖啡技术网(Chmhome):国外编程技术书籍,中文编程手册,经典编程文章,交流技术,技术软件下载,计算机论文,毕业论文.