以下代码有问题: -
C eval aaCHNO=%ucs2('0000000000')
C** move w_Chano aaCHNO
C Evalr aaCHNO= %ucs2(%editc(w_Chano:'X'))
定义:
AACHNO Char(10) CCSID(1200)
W_CHANO Packed(6,0)
在AACHNO期待: - 0000123456但是得到了' bbbb123456'其中b =空白为什么?
如何获得我想要的结果? 干杯, Jemrug
答案 0 :(得分:5)
操作码EVALR
不像MOVE
那样有效,它的作用类似于MOVE(P)
。为了获得您想要的行为,您将不得不使用%SUBST()
或将'0's
连接到您的值的前面,如下所示:
C Evalr aaCHNO = %ucs2('0000000000') + %ucs2(%editc(w_Chano:'X'))
或以自由格式使用:
evalr aaCHNO = %ucs2('0000000000') + %ucs2(%editc(w_Chano:'X'));
注意:有几种构造实际上并未附加类型,因此它们被定义为char()
。字符常量就是其中之一。另一个是数据结构。当您使用UCS2
数据时,必须记住这一点并转换常量,并且只使用明确定义为UCS2
的字段或子字段。否则将进行转换。