首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >初始化在PIC X和PIC S9 COMP变量上给出垃圾值。

初始化在PIC X和PIC S9 COMP变量上给出垃圾值。
EN

Stack Overflow用户
提问于 2019-03-12 19:06:30
回答 2查看 951关注 0票数 3

初始化下列变量时:

代码语言:javascript
复制
01  BATCH-REC.
       03  BATCH-VERSION             PIC X(2).
       03  BATCH-FIELDS              PIC X(682).
       03  BATCH-REC-01 REDEFINES BATCH-FIELDS.
           05  B01-OH-DTL-REC.
               07  B01-PE-ID         PIC X(12).
               07  B01-PMT-DISC-TERMS PIC S9(4) COMP.
               07  B01-PMT-DISC-AMT  PIC S9(18) COMP.

使用命令

代码语言:javascript
复制
INITIALIZE BATCH-REC.

变量B01-PMT-DISC-TERMS初始化为+08224,B01-PMT-DISC-AMT初始化为+314885530818453536。原因是什么?初始化后将空白移动到这些变量是个好主意吗?我不想改变这个批处理-REC代码,以添加一个默认值。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-03-12 19:24:42

INITIALIZE语句不会初始化重新定义的字段。如果要初始化重新定义的字段,则必须以某种方式标识它们。例如,

代码语言:javascript
复制
INITIALIZE BATCH-VERSION BATCH-REC-01

这将将基本字段初始化为SPACESZEROS,具体取决于它们的PICTUREBATCH-FIELDS不会被初始化。

在这种情况下,以下第3项适用。来自2002年INITIALIZE标准

5)每个隐式移动或SET语句中的接收操作数是通过应用以下步骤来确定的: ( a)首先,下列数据项被排除在接收操作数之外:

  1. 除类别数据指针、对象引用或程序指针的数据项外,任何接收移动语句操作数无效的标识符。
  2. 如果未指定填充短语,则使用显式或隐式填充子句的基本数据项。
  3. 任何从属于标识符-1的基本数据项,其数据描述项包含重定义或重命名子句,或从属于数据描述项包含重定义子句的数据项。但是,标识符-1本身可能有一个重定义子句,或者从属于带有重新定义子句的数据项。
票数 7
EN

Stack Overflow用户

发布于 2019-03-12 20:16:58

在这种情况下,我想你会发现你的初始化语句确实将你的PIC X数据初始化为空格。B01-PMT-光盘-术语的值为x'2020‘,而B01-PMT-DISC的值为x'2020202020202020’,主要数字被切断,这可能是由于报告的数值仅限于18位数字的图片子句。

无论如何,我同意@RickSmith,并相信他对你的问题的解决方案是正确的。

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

https://stackoverflow.com/questions/55129015

复制
相关文章

相似问题

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