首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Rpgle数据结构prob

Rpgle数据结构prob
EN

Stack Overflow用户
提问于 2018-04-04 09:54:22
回答 1查看 71关注 0票数 1

我正在输入的图表如下:

UTF16十六进制为CDE1C8040056的"췡전V“

请有人帮我了解一下发生了什么事:-

1)我将我的工作改为833

2)我所执行的代码如下:

代码语言:javascript
复制
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)执行的代码是:-

代码语言:javascript
复制
w_VIN  = dataFld;

EVAL datafld:x

代码语言:javascript
复制
00000     CDE1C804 00560020 00200020 00200020
00010     00200020 00200020 00200020 00200020
00020     0020.... ........ ........ ........

EVAL w_VIN:x

代码语言:javascript
复制
00000     0EC2D7B8 E50FE540 40404040 40404040
00010     40404040 40404040 40404040 40404040
00020     4040.... ........ ........ ........

我期待CDE1C8040056,我真的不明白为什么,有人能解释一下吗?我怎样才能得到我想要的结果?

致以敬意,

杰姆格

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-04-04 14:04:19

数据结构没有显式分配给它们的数据类型。它们总是使用Job隐式固定char字段。所以w_VINCHAR() CCSID(833)。你对此无能为力。然而,子字段可以是任何您想要的,并且您可以在彼此上叠加字段,以分割和骰子数据结构。例如:

代码语言:javascript
复制
dcl-ds w_VIN;
  vin1          Like(aaf010);
  vin2          Like(aacde1);
  vin3          Like(aaf006);
  ucs2_VIN      Like(dataFld) Pos(1);
end-ds;

现在,w_VIN没有像dataFld那样定义,所以如果您这样做了,就会发生转换。

代码语言:javascript
复制
w_VIN = dataFld;

ucs2_VIN的定义与dataFld完全一样,如果您这样做,则不会发生转换。

代码语言:javascript
复制
ucs2_VIN = dataFld;

由于ucs2_VIN显式地从数据结构的第一个字符开始,它将覆盖vin1vin2vin3。定义这些子字段的顺序很重要。如果您将ucs_VIN放在第一位,那么vin1vin2vin3将在结构中遵循它,但是由于我首先定义了数据结构,然后在末尾添加了一个额外的定义,最后一个定义将覆盖在其他定义之上。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49648030

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档