入力ファイルを読み取って、EOFに達するまで出力ファイルに書き込んでいますが、プログラムの問題は、EOFに達するまで出力ファイルにレコードを書き込んだ後、出力ファイルに入力ファイルと比較して1つの余分なレコードが含まれていることです。入力ファイルに 10 レコードが含まれる場合、出力ファイルには 11 レコードが含まれます。また、出力ファイルの余分なレコードは最後のレコードと同じです。つまり、最後のレコードが 2 回繰り返されます。
私のコードの問題点を教えてください。
私のプログラムコード。
?SYMBOLS
?INSPECT
IDENTIFICATION DIVISION.
PROGRAM-ID. InsertRecords.
AUTHOR. XYZ.
ENVIRONMENT DIVISION.
INPUT-OUTPUT SECTION.
FILE-CONTROL.
SELECT StudentRecords
ASSIGN TO "=MKFIL1"
ORGANIZATION IS SEQUENTIAL
ACCESS IS SEQUENTIAL
FILE STATUS IS WS-FILE-STATUS.
SELECT NEWStudentRecords
ASSIGN TO "=MKFIL2"
ORGANIZATION IS SEQUENTIAL
ACCESS IS SEQUENTIAL
FILE STATUS IS WS-FILE-STATUS.
DATA DIVISION.
FILE SECTION.
FD StudentRecords.
01 StudentRecord.
05 Student PIC X(431).
FD NewStudentRecords.
01 NewStudentRecord PIC X(431).
WORKING-STORAGE SECTION.
01 WS-DETAIL-RECORD PIC X(431).
01 EOF PIC X(3) VALUE "NO".
01 WS-FILE-STATUS PIC XX VALUE ZEROES.
01 WS-SOURCE.
05 PIC X(16) VALUE X"000102030405060708090A0B0C0D0E0F".
05 PIC X(16) VALUE X"101112131415161718191A1B1C1D1E1F".
05 PIC X(16) VALUE X"202122232425262728292A2B2C2D2E2F".
05 PIC X(16) VALUE X"303132333435363738393A3B3C3D3E3F".
05 PIC X(16) VALUE X"404142434445464748494A4B4C4D4E4F".
05 PIC X(16) VALUE X"505152535455565758595A5B5C5D5E5F".
05 PIC X(16) VALUE X"606162636465666768696A6B6C6D6E6F".
05 PIC X(16) VALUE X"707172737475767778797A7B7C7D7E7F".
05 PIC X(16) VALUE X"808182838485868788898A8B8C8D8E8F".
05 PIC X(16) VALUE X"909192939495969798999A9B9C9D9E9F".
05 PIC X(16) VALUE X"A0A1A2A3A4A5A6A7A8A9AAABACADAEAF".
05 PIC X(16) VALUE X"B0B1B2B3B4B5B6B7B8B9BABBBCBDBEBF".
05 PIC X(16) VALUE X"C0C1C2C3C4C5C6C7C8C9CACBCCCDCECF".
05 PIC X(16) VALUE X"D0D1D2D3D4D5D6D7D8D9DADBDCDDDEDF".
05 PIC X(16) VALUE X"E0E1E2E3E4E5E6E7E8E9EAEBECEDEEEF".
05 PIC X(16) VALUE X"F0F1F2F3F4F5F6F7F8F9FAFBFCFDFEFF".
01 WS-TARGET.
05 PIC X(16) VALUE X"20202020202020202020202020202020".
05 PIC X(16) VALUE X"20202020202020202020202020202020".
05 PIC X(16) VALUE X"202122232425262728292A2B2C2D2E2F".
05 PIC X(16) VALUE X"303132333435363738393A3B3C3D3E3F".
05 PIC X(16) VALUE X"404142434445464748494A4B4C4D4E4F".
05 PIC X(16) VALUE X"505152535455565758595A5B5C5D5E5F".
05 PIC X(16) VALUE X"606162636465666768696A6B6C6D6E6F".
05 PIC X(16) VALUE X"707172737475767778797A7B7C7D7E20".
05 PIC X(16) VALUE X"20202020202020202020202020202020".
05 PIC X(16) VALUE X"20202020202020202020202020202020".
05 PIC X(16) VALUE X"20202020202020202020202020202020".
05 PIC X(16) VALUE X"20202020202020202020202020202020".
05 PIC X(16) VALUE X"20202020202020202020202020202020".
05 PIC X(16) VALUE X"20202020202020202020202020202020".
05 PIC X(16) VALUE X"20202020202020202020202020202020".
05 PIC X(16) VALUE X"20202020202020202020202020202020".
PROCEDURE DIVISION.
BEGIN.
OPEN INPUT StudentRecords
OPEN OUTPUT NewStudentRecords
PERFORM UNTIL EOF = "YES"
READ StudentRecords
AT END MOVE "YES" TO EOF
END-READ
MOVE Student TO WS-DETAIL-RECORD
INSPECT WS-DETAIL-RECORD CONVERTING WS-SOURCE TO WS-TARGET
WRITE NewStudentRecord FROM WS-DETAIL-RECORD
END-PERFORM
CLOSE StudentRecords
CLOSE NewStudentRecords
STOP RUN.