Cobol 初始化为PIC X和PIC S9 COMP变量提供垃圾值
初始化以下变量时:Cobol 初始化为PIC X和PIC S9 COMP变量提供垃圾值,cobol,Cobol,初始化以下变量时: 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).
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
初始化为+3148855308184536。
原因可能是什么?在初始化之后,在这些变量上移动一个空格是一个好主意吗?我不想更改BATCH-REC代码以在其上添加默认值。INITIALIZE语句不会初始化重新定义的字段。如果要初始化重新定义的字段,必须以某种方式标识它们。比如说,
INITIALIZE BATCH-VERSION BATCH-REC-01
这将根据其图片
将基本字段初始化为空格
或零
<代码>批处理字段将不会初始化
在这种情况下,以下第3项适用。根据2002年的
初始化标准
:
5) 通过按顺序应用以下步骤确定每个隐式MOVE或SET语句中的接收操作数:
a) 首先,以下数据项被排除为接收操作数:
在本例中,我想您会发现INITIALIZE语句将PICX数据初始化为空格。B01-PMT-DISC-TERMS的值为x'2020',B01-PMT-DISC-AMT的值为x'202020202020',前导数字被截断,这可能是因为报告的值仅限于18位的picture子句
无论如何,我同意@RickSmith的观点,并相信他解决您问题的方法是正确的。这就解释了很多问题。谢谢你,瑞克