94400d50d4
作为子目录纳入系统,与核心测试管道协同 Co-Authored-By: Claude <noreply@anthropic.com>
90 lines
3.0 KiB
COBOL
90 lines
3.0 KiB
COBOL
*> ============================================================
|
|
*> 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.
|