*> ============================================================ *> main-divide-100 : CDR数据100分割 (CDR 100-Split) *> Input : FILE-IN (INPUT.DAT: CDR数据) *> Output: FILE-OUT (SPLIT-OUT: 100件毎分割) *> Coverage: S-N005, S-N006, S-N007, S-R001, S-R002 *> ============================================================ IDENTIFICATION DIVISION. PROGRAM-ID. DIVIDE-100. ENVIRONMENT DIVISION. INPUT-OUTPUT SECTION. FILE-CONTROL. SELECT FILE-IN ASSIGN TO "INPUT.DAT" ORGANIZATION IS SEQUENTIAL FILE STATUS IS WS-FS. SELECT FILE-OUT ASSIGN TO "SPLIT-OUT" ORGANIZATION IS SEQUENTIAL. DATA DIVISION. FILE SECTION. FD FILE-IN RECORD CONTAINS 40 CHARACTERS. 01 IN-REC. 05 IN-KEY PIC X(10). 05 IN-DATA PIC X(20). 05 IN-AMT PIC 9(10). FD FILE-OUT RECORD CONTAINS 40 CHARACTERS. 01 OUT-REC PIC X(40). WORKING-STORAGE SECTION. 01 WS-FS PIC X(2). 01 WS-EOF PIC X(1) VALUE 'N'. 88 WS-EOF-Y VALUE 'Y' FALSE 'N'. 01 WS-COUNT PIC 9(10). 01 WS-FILE-NUM PIC 9(2). 01 WS-FILE-NAME PIC X(20). 01 WS-TOTAL-IN PIC 9(10). 01 WS-TOTAL-OUT PIC 9(10). 01 WS-SPLIT-LIMIT PIC 9(5) VALUE 100. PROCEDURE DIVISION. MAIN. DISPLAY "DIVIDE-100: Starting 100-split" OPEN INPUT FILE-IN. MOVE 1 TO WS-FILE-NUM. MOVE 0 TO WS-COUNT. MOVE 0 TO WS-TOTAL-IN. PERFORM OPEN-NEXT-FILE. PERFORM UNTIL WS-EOF-Y READ FILE-IN INTO IN-REC AT END SET WS-EOF-Y TO TRUE NOT AT END ADD 1 TO WS-TOTAL-IN WS-COUNT MOVE IN-REC TO OUT-REC WRITE OUT-REC ADD 1 TO WS-TOTAL-OUT IF WS-COUNT >= WS-SPLIT-LIMIT CLOSE FILE-OUT ADD 1 TO WS-FILE-NUM MOVE 0 TO WS-COUNT PERFORM OPEN-NEXT-FILE END-IF END-READ END-PERFORM. CLOSE FILE-IN FILE-OUT. DISPLAY "DIVIDE-100: IN=" WS-TOTAL-IN " OUT=" WS-TOTAL-OUT " FILES=" WS-FILE-NUM IF WS-TOTAL-IN = WS-TOTAL-OUT DISPLAY "DIVIDE-100: PASS" STOP RUN RETURNING 0 ELSE DISPLAY "DIVIDE-100: FAIL" STOP RUN RETURNING 1 END-IF . OPEN-NEXT-FILE. STRING "SPLIT100-" WS-FILE-NUM ".DAT" DELIMITED BY SIZE INTO WS-FILE-NAME END-STRING CLOSE FILE-OUT OPEN OUTPUT FILE-OUT DISPLAY "OPEN: " WS-FILE-NAME . END PROGRAM DIVIDE-100.