Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/mercurial/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Cobol 初始化为PIC X和PIC S9 COMP变量提供垃圾值_Cobol - Fatal编程技术网

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) 首先,以下数据项被排除为接收操作数:

  • 接收MOVE语句操作数时无效的任何标识符,但类别数据指针、对象引用或程序指针的数据项除外
  • 如果未指定填充短语,则使用显式或隐式填充子句替换基本数据项
  • 从属于标识符-1的任何基本数据项,其数据描述条目包含重定义或重命名子句,或从属于其数据描述条目包含重定义子句的数据项。然而,标识符-1本身可能有重定义子句,或者从属于具有重定义子句的数据项

  • 在本例中,我想您会发现INITIALIZE语句将PICX数据初始化为空格。B01-PMT-DISC-TERMS的值为x'2020',B01-PMT-DISC-AMT的值为x'202020202020',前导数字被截断,这可能是因为报告的值仅限于18位的picture子句


    无论如何,我同意@RickSmith的观点,并相信他解决您问题的方法是正确的。

    这就解释了很多问题。谢谢你,瑞克