初始化下列变量时:
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.使用命令
INITIALIZE BATCH-REC.变量B01-PMT-DISC-TERMS初始化为+08224,B01-PMT-DISC-AMT初始化为+314885530818453536。原因是什么?初始化后将空白移动到这些变量是个好主意吗?我不想改变这个批处理-REC代码,以添加一个默认值。
发布于 2019-03-12 19:24:42
INITIALIZE语句不会初始化重新定义的字段。如果要初始化重新定义的字段,则必须以某种方式标识它们。例如,
INITIALIZE BATCH-VERSION BATCH-REC-01这将将基本字段初始化为SPACES或ZEROS,具体取决于它们的PICTURE。BATCH-FIELDS不会被初始化。
在这种情况下,以下第3项适用。来自2002年INITIALIZE标准
5)每个隐式移动或SET语句中的接收操作数是通过应用以下步骤来确定的: ( a)首先,下列数据项被排除在接收操作数之外:
发布于 2019-03-12 20:16:58
在这种情况下,我想你会发现你的初始化语句确实将你的PIC X数据初始化为空格。B01-PMT-光盘-术语的值为x'2020‘,而B01-PMT-DISC的值为x'2020202020202020’,主要数字被切断,这可能是由于报告的数值仅限于18位数字的图片子句。
无论如何,我同意@RickSmith,并相信他对你的问题的解决方案是正确的。
https://stackoverflow.com/questions/55129015
复制相似问题