Ibm midrange System i命令行RPG调用和压缩数字-如何格式化

Ibm midrange System i命令行RPG调用和压缩数字-如何格式化,ibm-midrange,rpgle,rpg,Ibm Midrange,Rpgle,Rpg,如果RPG程序参数定义为压缩(11,0) 给出一个十进制数据错误 消息ID MCH1202 原因……:包装或分区的符号或数字代码 十进制操作数出错。有效符号为十六进制A-F,有效数字范围为 十六进制0-9 在程序转储中,参数显示为: PACKED(11,0) 12345678901. VALUE IN HEX '12345678901F'X 谷歌搜索过,但找不到压缩字段格式的简单解释 编写一个将参数作为数字或字符的包装程序并将其转换为压缩包可能会更好。编

如果RPG程序参数定义为压缩(11,0)

给出一个十进制数据错误

消息ID MCH1202 原因……:包装或分区的符号或数字代码
十进制操作数出错。有效符号为十六进制A-F,有效数字范围为 十六进制0-9

在程序转储中,参数显示为:

PACKED(11,0)         12345678901.   
VALUE IN HEX         '12345678901F'X 

谷歌搜索过,但找不到压缩字段格式的简单解释

编写一个将参数作为数字或字符的包装程序并将其转换为压缩包可能会更好。

编写一个将参数作为数字或字符的包装程序并将其转换为压缩包可能会更好。

如果问题真的是参数,您可以通过这样做来解决这个问题以下解决方法


在程序
INZSR
中添加调试断点,并执行调用
mypgm parm(“”)
。然后,您可以在调试模式下使用
EVAL
添加正确的值。

如果问题确实是参数,您可以通过执行以下解决方法来解决此问题


在程序
INZSR
中添加调试断点,并执行调用
mypgm parm(“”)
。然后,您可以在调试模式下使用
EVAL
添加正确的值。

您对打包有了正确的想法。我无法再现你的症状。您是否绝对确定该参数定义为打包?您是否绝对确定错误是由调用引起的,而不是程序内部的东西?是的,查看程序转储,参数是压缩的(11,0)12345678901。十六进制12345678901F’XI的值同意John的说法,您通话中的参数不是问题所在。错误消息和转储应该告诉您是什么语句导致了问题。注意:需要
h选项(*srcsmt)
才能使错误引用源语句编号而不是编译列表行。@John Y谢谢,问题是由其他原因引起的@查尔斯-你是对的,这个问题是由其他原因引起的!你对包装有正确的想法。我无法再现你的症状。您是否绝对确定该参数定义为打包?您是否绝对确定错误是由调用引起的,而不是程序内部的东西?是的,查看程序转储,参数是压缩的(11,0)12345678901。十六进制12345678901F’XI的值同意John的说法,您通话中的参数不是问题所在。错误消息和转储应该告诉您是什么语句导致了问题。注意:需要
h选项(*srcsmt)
才能使错误引用源语句编号而不是编译列表行。@John Y谢谢,问题是由其他原因引起的@查尔斯-你是对的,这个问题是由其他原因引起的!非常感谢你的建议,这就是我最后要做的-我仍然想修改十六进制格式的数字参数信息,以前有关于这方面的手册,但似乎在网上找不到,@mike这通常是编译*CMD的地方。你可以将*CMD对象看作是为CL创建“原型”的一种方式。使用*CMD,对十六进制值的需求几乎消失了。非常感谢你的建议,这就是我最终要做的-我仍然想修改十六进制格式的数字参数的信息,以前有关于这方面的手册,但似乎无法在网上找到它们,@mike这通常是编译*CMD的地方。您可以将*CMD对象看作是为CL创建“原型”的一种方式。使用*CMD,对十六进制值的需求几乎消失了。
PACKED(11,0)         12345678901.   
VALUE IN HEX         '12345678901F'X