db2 DSNACICS存储过程-在逗号区域参数中传递comp和comp 3字段的方法

tzcvj98z  于 2022-12-04  发布在  DB2
关注(0)|答案(1)|浏览(216)

我有一个关于在dsnacics存储过程的上下文中在dfhcommarea中传递comp和comp 3字段数据的问题。如果字段是x(3),我传递了3个字符,并在前面加上空格,以防数据较小。但是,如果字段是s9(4)comp,我应该在dfhcommarea中传递多少个字符,以防我必须发送值“2”?

snvhrwxg

snvhrwxg1#

一般而言,COBOL中的PIC S9(4) COMP字段是一个半字二进制字段,这意味着它占用2个字节的物理空间,其值以十六进制表示。PIC S9(4) COMP字段可以存储从-32,768(十六进制为8000)到+32,767(十六进制为7 FFF)的值。
但是,请注意您使用的TRUNC编译器选项。如果传递数据的程序编译为TRUNC(BIN),则可以在字段中使用上述范围的值。但是,如果您指定了TRUNC(OPT)编译器选项,并且将值32767移到PIC S9(4) COMP字段中,你很可能最终得到的值是2767,而不是32767!也就是说,不是你所期望的值。(那个值让我吃了一两次亏)。
以下是对文档中某个页面的引用,可能会有所帮助https://www.ibm.com/docs/en/cobol-zos/6.1?topic=data-examples-numeric-internal-representation
如果您想将值2移动到PIC S9(4) COMP字段中,则在内部它将是表示为(十六进制)0002的2个字节。

相关问题