COBOL-Record正在被替换而不是添加



如果JOBCODE = S and SALES>100000 .00。变量都被正确传递,但当程序完成时,只有最后一个记录留在输出文件中,我不知道为什么。我如何将它添加到前一个记录的下面?我也已经使用了OPEN EXTEND并收到了相同的结果。下面是当前的输出:

Employee recognition for the week ending: 2022-06-22
----------------------------------------------------
Last Name             First Name          Store #
----------------------------------------------------
ESTERA                BETHANY               0003

应该是:

Employee recognition for the week ending: 2022-06-22
----------------------------------------------------
Last Name             First Name          Store #
----------------------------------------------------
CAMERON               STANLEY               0003
ELDOUR                JOHNATHAN             0002
KENT                  LORENE                0001
NGUYEN                CARMELO               0002
SRIVASTAVA            SAM                   0003
LABRIE                ARMAND                0003
CHU                   LARISA                0001
FORLINI               COREEN                0002
ESTERA                BETHANY               0003

下面是我的程序:

program-id. Assignment6 AS "Assignment6".
environment division.
input-output section.
*INPUT FILE DECLARATION
SELECT IN-FILE ASSIGN "C:DataFilesdataIn.dat"
ORGANIZATION IS LINE SEQUENTIAL.
*SALES RECONGNITION OUTPUT FILE DECLARATION       
SELECT OUT-FILE-SALES ASSIGN 
"C:DataFilesSalespersonRecongnition.rpt"
ORGANIZATION IS LINE SEQUENTIAL.
*SALARY EXPENSES OUTPUT FILE DECLARATION
configuration section.
data division.
file section.

FD IN-FILE.
01 IN-RECORD.
03 IN-EMPLOYEEID PIC X(4).
03 IN-JOBCODE PIC X(1).
03 IN-LASTNAME PIC X(14).
03 IN-FIRSTNAME PIC X(14).
03 IN-STARTDATE PIC 9(8).
03 IN-STORENUM PIC 9(4).
03 IN-SALARY PIC 9(6).
03 IN-SALES PIC 9(8).

FD OUT-FILE-SALES.
01 SALES-OUT-RECORD PIC X(52).

working-storage section.
*END OF FILE 
01 WS-EOF PIC 9(1) VALUE 0.

*WS IN-RECORD HOLDER
01 WS-IN-RECORD.
03 WS-IN-EMPLOYEEID PIC X(4).
03 WS-IN-JOBCODE PIC X(1).
03 WS-IN-LASTNAME PIC X(14).
03 WS-IN-FIRSTNAME PIC X(14).
03 WS-IN-STARTDATE PIC 9(8).
03 WS-IN-STORENUM PIC 9(4).
03 WS-IN-SALARY PIC 9(6).
03 WS-IN-SALES PIC 9(8).

*SALES REPORT HEADINGS STRUCTURE
01 SALES-RECORD-HEADING1.
03 FILLER PIC A(52) VALUE 
"Employee recognition for the week ending: 2022-06-22".
01 SALES-RECORD-FILLER1.
03 FILLER PIC X(52) VALUE ALL '-'.
01 SALES-RECORD-HEADING2.
03 FILLER PIC X(9) VALUE "Last Name".
03 FILLER PIC X(13) VALUE SPACE.
03 FILLER PIC X(10) VALUE "First Name".
03 FILLER PIC X(10) VALUE SPACE.
03 FILLER PIC X(7) VALUE "Store #".
03 FILLER PIC X(3) VALUE SPACE.
01 SALES-RECORD-FILLER2.
03 FILLER PIC X(52) VALUE ALL "-".
*SALES RECORD ROW STRUCTURE
01 SALES-ROW.
03 WS-SALES-LASTNAME PIC X(14).
03 FILLER PIC X(8) VALUE SPACE.
03 WS-SALES-FIRSTNAME PIC X(14).
03 FILLER PIC X(8) VALUE SPACE.
03 WS-SALES-STORENUM PIC 9(4).
03 FILLER PIC X(4) VALUE SPACE.

procedure division.


*MAIN PROGRAM 

PERFORM OPEN-FILES.
PERFORM READ-FILE
UNTIL WS-EOF = 1.
PERFORM CLOSE-FILES.


OPEN-FILES.
OPEN INPUT IN-FILE
OUTPUT OUT-FILE-SALES
WRITE SALES-OUT-RECORD FROM SALES-RECORD-HEADING1
WRITE SALES-OUT-RECORD FROM SALES-RECORD-FILLER1
WRITE SALES-OUT-RECORD FROM SALES-RECORD-HEADING2
WRITE SALES-OUT-RECORD FROM SALES-RECORD-FILLER2.


READ-FILE.
READ IN-FILE INTO IN-RECORD
AT END
SET WS-EOF TO 1
NOT AT END
PERFORM GOT-A-RECORD
END-READ.
GOT-A-RECORD.
MOVE IN-EMPLOYEEID TO WS-IN-EMPLOYEEID
MOVE IN-JOBCODE    TO WS-IN-JOBCODE
MOVE IN-LASTNAME   TO WS-IN-LASTNAME
MOVE IN-FIRSTNAME  TO WS-IN-FIRSTNAME
MOVE IN-STARTDATE  TO WS-IN-STARTDATE
MOVE IN-STORENUM   TO WS-IN-STORENUM
MOVE IN-SALARY     TO WS-IN-SALARY
MOVE IN-SALES      TO WS-IN-SALES

PERFORM SALES-REPORT-ADD-RECORD.


SALES-REPORT-ADD-RECORD.
IF WS-IN-JOBCODE = "S"
AND WS-IN-SALES > 10000000
MOVE WS-IN-LASTNAME TO WS-SALES-LASTNAME
MOVE WS-IN-FIRSTNAME TO WS-SALES-FIRSTNAME
MOVE WS-IN-STORENUM TO WS-SALES-STORENUM
PERFORM WRITE-RECORD
END-IF .

WRITE-RECORD.
WRITE SALES-OUT-RECORD FROM SALES-ROW
DISPLAY SALES-ROW.

CLOSE-FILES.
CLOSE IN-FILE
OUT-FILE-SALES.


.

end program Assignment6.

任何建议都将非常感谢!

你的程序没有明确的结束,因此它"不合格":您可能希望在主目录的末尾添加GOBACK.

最新更新