Cobol 当我添加斜杠时,我会将数字添加到记录中
还有更多的程序,我会提供代码,如果必要的话。简而言之,我的程序从文件中获取输入,然后将其加载到临时记录中。然后我将临时记录中的数据复制到输出文件的记录中,并将其写入输出文件。当它写的时候,我丢失了工资数据,它为DOB添加了数字,而不是斜杠。为什么?我做错了什么Cobol 当我添加斜杠时,我会将数字添加到记录中,cobol,Cobol,还有更多的程序,我会提供代码,如果必要的话。简而言之,我的程序从文件中获取输入,然后将其加载到临时记录中。然后我将临时记录中的数据复制到输出文件的记录中,并将其写入输出文件。当它写的时候,我丢失了工资数据,它为DOB添加了数字,而不是斜杠。为什么?我做错了什么 01 EMPLOYEE-RECORD1. ... 05 EMPLOYEEDOB1. 10 MONTH1 PIC 99. *> here 10 FILLER PI
01 EMPLOYEE-RECORD1.
...
05 EMPLOYEEDOB1.
10 MONTH1 PIC 99.
*> here 10 FILLER PIC X(1) VALUE "/".
10 DAY11 PIC 99.
*> here 10 FILLER PIC X(1) VALUE "/".
10 YEARS1 PIC 9(4).
*> here
05 EMPLOYEE_YEARLYPAY1 PIC ZZ,ZZZV99.
...
实际的
移动
或读取。。。缺少
,但我假设您(直接或间接)将一个PIC 9(06)
项目移动到EMPLOYEEDOB1
,这是一个不同的格式,实际的PIC X(08)
01 EMPLOYEE-RECORD1.
...
05 EMPLOYEEDOB1.
10 MONTH1 PIC 99.
*> here 10 FILLER PIC X(1) VALUE "/".
10 DAY11 PIC 99.
*> here 10 FILLER PIC X(1) VALUE "/".
10 YEARS1 PIC 9(4).
*> here
05 EMPLOYEE_YEARLYPAY1 PIC ZZ,ZZZV99.
...
只要问题没有得到改善(通过显示数据定义和“复制”语句),我就说“我做错了什么?”的答案是:你对EmployeedObj使用了错误的定义和/或错误地“复制”了数据
01 EMPLOYEE-RECORD1.
...
05 EMPLOYEEDOB1.
10 MONTH1 PIC 99.
*> here 10 FILLER PIC X(1) VALUE "/".
10 DAY11 PIC 99.
*> here 10 FILLER PIC X(1) VALUE "/".
10 YEARS1 PIC 9(4).
*> here
05 EMPLOYEE_YEARLYPAY1 PIC ZZ,ZZZV99.
...
目标字段定义必须与原始数据相匹配,或更改为编辑字段,如PIC 99/99/99
(其中/
自动添加到显示中
/写入
),在后一种情况下:请注意,无法对编辑的字段执行任何算术运算
01 EMPLOYEE-RECORD1.
...
05 EMPLOYEEDOB1.
10 MONTH1 PIC 99.
*> here 10 FILLER PIC X(1) VALUE "/".
10 DAY11 PIC 99.
*> here 10 FILLER PIC X(1) VALUE "/".
10 YEARS1 PIC 9(4).
*> here
05 EMPLOYEE_YEARLYPAY1 PIC ZZ,ZZZV99.
...
备选方案:
MOVE
出生日期(DOB)的所有三个部分,您可以保留您的定义(仅当您想在之后对这三个部分做任何事情时才有用)。您的员工年薪1图片错误,应该是ZZ,ZZZ.99(一个句点/句点实际小数点替换V隐含小数点). 如果将数据移动到组项,则VALUE语句将不会“持久化”。如果将9(8)移动到组项,它将只执行字母移动,给您八个字符和两个尾随空格(填充)。个人移动或使用“/”编辑符号定义。@BillWoodger感谢您的提示,现在工资显示正确了。:-)
01 EMPLOYEE-RECORD1.
...
05 EMPLOYEEDOB1.
10 MONTH1 PIC 99.
*> here 10 FILLER PIC X(1) VALUE "/".
10 DAY11 PIC 99.
*> here 10 FILLER PIC X(1) VALUE "/".
10 YEARS1 PIC 9(4).
*> here
05 EMPLOYEE_YEARLYPAY1 PIC ZZ,ZZZV99.
...