我正在输入的图表如下:
UTF16十六进制为CDE1C8040056的"췡전V“
请有人帮我了解一下发生了什么事:-
1)我将我的工作改为833
2)我所执行的代码如下:
D w_VIN ds
D vin1 like(AAF010)
D vin2 like(AACDE1)
D vin3 like(AAF006)其中:- AAF010是C(10) CCSID(1200),AACDE1是C(1) CCSID(1200),AAF006是C(6)
其中,DataFld C(17) CCSID(1200)执行的代码是:-
w_VIN = dataFld;EVAL datafld:x
00000 CDE1C804 00560020 00200020 00200020
00010 00200020 00200020 00200020 00200020
00020 0020.... ........ ........ ........
EVAL w_VIN:x
00000 0EC2D7B8 E50FE540 40404040 40404040
00010 40404040 40404040 40404040 40404040
00020 4040.... ........ ........ ........我期待CDE1C8040056,我真的不明白为什么,有人能解释一下吗?我怎样才能得到我想要的结果?
致以敬意,
杰姆格
发布于 2018-04-04 14:04:19
数据结构没有显式分配给它们的数据类型。它们总是使用Job隐式固定char字段。所以w_VIN是CHAR() CCSID(833)。你对此无能为力。然而,子字段可以是任何您想要的,并且您可以在彼此上叠加字段,以分割和骰子数据结构。例如:
dcl-ds w_VIN;
vin1 Like(aaf010);
vin2 Like(aacde1);
vin3 Like(aaf006);
ucs2_VIN Like(dataFld) Pos(1);
end-ds;现在,w_VIN没有像dataFld那样定义,所以如果您这样做了,就会发生转换。
w_VIN = dataFld;ucs2_VIN的定义与dataFld完全一样,如果您这样做,则不会发生转换。
ucs2_VIN = dataFld;由于ucs2_VIN显式地从数据结构的第一个字符开始,它将覆盖vin1、vin2和vin3。定义这些子字段的顺序很重要。如果您将ucs_VIN放在第一位,那么vin1、vin2和vin3将在结构中遵循它,但是由于我首先定义了数据结构,然后在末尾添加了一个额外的定义,最后一个定义将覆盖在其他定义之上。
https://stackoverflow.com/questions/49648030
复制相似问题